Bsr/jr,
Je commence avec les pointeurs et je voudrais comprendre le code de ce
tutorial :
http://www.ltam.lu/Tutoriel_Ansi_C/
Je ne sais pas comment l'auteur à organiser ces liens html mais je ne
peux pas copier-coller le lien exact de la page ou se trouve le
code...pour faire bref, il s'agit de l'exercice 9.5 dans le chapitre
des pointeurs.
Il y a diverses questions dans à l'intérieur du code ci-dessous :
#include<stdio.h>
int main(void)
{
int TabA[] = { 31, 62, 17, 28, 45, 62, 34, 22, 62 } ;
int *p1 = TabA ;
int *p2 = TabA ;
nbr = 62 ;
for ( p1 = TabA ; p1< TabA+n ; p1++ )
{
*p2 = *p1 ;
if ( *p2 != nbr )
p2++ ;
}
Question 1:
A ce niveau, si je boucle avec p2, les valeurs renvoyees sont :
("n" n'a pas été redimensionné)
{ 31, 17, 28, 45, 34, 22, 62, 22, 62 }
printf("np2: n" ) ;
for ( p2 = TabA ; p2< TabA+n ; p2 ++ )
printf("%dt", *p2 ) ;
Les valeurs renvoyees sont toujours au nombre de 10 comme lors de
leur initialisation
mais a partir de l'indice 6 soit 22, je ne comprends pas les valeurs
que je retrouve
après cet indice soit 62, 22, 62.
/* Questions 2:
printf("nTaille de P1 divise par int : %dn", sizeof(p1)/4) ;
- Pourquoi sizeof(p1) renvoie 1 ?
--- alors que sizeof(TabA)/4), renvoie 9 ?
--- en fait sizeof ne fonctionne pas avec les pointeurs ???
--- seulement il y a un débat entre ceux qui disent que les tableaux
sont des pointeurs et ceux qui ne sont pas d'accord avec ça et
qui manquent d'arguments.
/* Questions 3:
Je ne comprends pas comment TabA qui a une valeur de renvoie avec
sizeof identique
tout au long du programme (normal ce n'est pas un pointeur :) ) et n
qui dans sa valeur
initiale est 9 et sa valeur volontairement modifiée renvoyée par n > p2 - TabA : 6 ...
ALORS QUE p2 sur ma machine a une valeur identique a TabA (chez moi
591036) au debut du déroulement
du programme mais qui est modifiée à partir de "Juste pour info 3" et
qui donne (chez moi) : 591060 alors
la question est comment est ce que dans les boucles correspondantes
591060< 591036 + 6 ???
Au tout début du programme : le second argument de la boucle est p1<
TabA + n soit
sur mon système : 591036< 591036 + 9 .
Là, je trouve que c'est cohérent mais avec p2, j'ai du mal à
comprendre.
Je dois aussi avouer que ces nombre 591036, 591060 ne me parlent pas
beaucoup. Je crois il s'agit de l'affichage
avec une valeur entier d'une adresse dans le buffer. C'est unique à un
instant t a ce qui est dans la mémoire du système.
Par curiosité, s'agit-il de heap ou ou stack ?
Bsr/jr,
Je commence avec les pointeurs et je voudrais comprendre le code de ce
tutorial :
http://www.ltam.lu/Tutoriel_Ansi_C/
Je ne sais pas comment l'auteur à organiser ces liens html mais je ne
peux pas copier-coller le lien exact de la page ou se trouve le
code...pour faire bref, il s'agit de l'exercice 9.5 dans le chapitre
des pointeurs.
Il y a diverses questions dans à l'intérieur du code ci-dessous :
#include<stdio.h>
int main(void)
{
int TabA[] = { 31, 62, 17, 28, 45, 62, 34, 22, 62 } ;
int *p1 = TabA ;
int *p2 = TabA ;
nbr = 62 ;
for ( p1 = TabA ; p1< TabA+n ; p1++ )
{
*p2 = *p1 ;
if ( *p2 != nbr )
p2++ ;
}
Question 1:
A ce niveau, si je boucle avec p2, les valeurs renvoyees sont :
("n" n'a pas été redimensionné)
{ 31, 17, 28, 45, 34, 22, 62, 22, 62 }
printf("np2: n" ) ;
for ( p2 = TabA ; p2< TabA+n ; p2 ++ )
printf("%dt", *p2 ) ;
Les valeurs renvoyees sont toujours au nombre de 10 comme lors de
leur initialisation
mais a partir de l'indice 6 soit 22, je ne comprends pas les valeurs
que je retrouve
après cet indice soit 62, 22, 62.
/* Questions 2:
printf("nTaille de P1 divise par int : %dn", sizeof(p1)/4) ;
- Pourquoi sizeof(p1) renvoie 1 ?
--- alors que sizeof(TabA)/4), renvoie 9 ?
--- en fait sizeof ne fonctionne pas avec les pointeurs ???
--- seulement il y a un débat entre ceux qui disent que les tableaux
sont des pointeurs et ceux qui ne sont pas d'accord avec ça et
qui manquent d'arguments.
/* Questions 3:
Je ne comprends pas comment TabA qui a une valeur de renvoie avec
sizeof identique
tout au long du programme (normal ce n'est pas un pointeur :) ) et n
qui dans sa valeur
initiale est 9 et sa valeur volontairement modifiée renvoyée par n > p2 - TabA : 6 ...
ALORS QUE p2 sur ma machine a une valeur identique a TabA (chez moi
591036) au debut du déroulement
du programme mais qui est modifiée à partir de "Juste pour info 3" et
qui donne (chez moi) : 591060 alors
la question est comment est ce que dans les boucles correspondantes
591060< 591036 + 6 ???
Au tout début du programme : le second argument de la boucle est p1<
TabA + n soit
sur mon système : 591036< 591036 + 9 .
Là, je trouve que c'est cohérent mais avec p2, j'ai du mal à
comprendre.
Je dois aussi avouer que ces nombre 591036, 591060 ne me parlent pas
beaucoup. Je crois il s'agit de l'affichage
avec une valeur entier d'une adresse dans le buffer. C'est unique à un
instant t a ce qui est dans la mémoire du système.
Par curiosité, s'agit-il de heap ou ou stack ?
Bsr/jr,
Je commence avec les pointeurs et je voudrais comprendre le code de ce
tutorial :
http://www.ltam.lu/Tutoriel_Ansi_C/
Je ne sais pas comment l'auteur à organiser ces liens html mais je ne
peux pas copier-coller le lien exact de la page ou se trouve le
code...pour faire bref, il s'agit de l'exercice 9.5 dans le chapitre
des pointeurs.
Il y a diverses questions dans à l'intérieur du code ci-dessous :
#include<stdio.h>
int main(void)
{
int TabA[] = { 31, 62, 17, 28, 45, 62, 34, 22, 62 } ;
int *p1 = TabA ;
int *p2 = TabA ;
nbr = 62 ;
for ( p1 = TabA ; p1< TabA+n ; p1++ )
{
*p2 = *p1 ;
if ( *p2 != nbr )
p2++ ;
}
Question 1:
A ce niveau, si je boucle avec p2, les valeurs renvoyees sont :
("n" n'a pas été redimensionné)
{ 31, 17, 28, 45, 34, 22, 62, 22, 62 }
printf("np2: n" ) ;
for ( p2 = TabA ; p2< TabA+n ; p2 ++ )
printf("%dt", *p2 ) ;
Les valeurs renvoyees sont toujours au nombre de 10 comme lors de
leur initialisation
mais a partir de l'indice 6 soit 22, je ne comprends pas les valeurs
que je retrouve
après cet indice soit 62, 22, 62.
/* Questions 2:
printf("nTaille de P1 divise par int : %dn", sizeof(p1)/4) ;
- Pourquoi sizeof(p1) renvoie 1 ?
--- alors que sizeof(TabA)/4), renvoie 9 ?
--- en fait sizeof ne fonctionne pas avec les pointeurs ???
--- seulement il y a un débat entre ceux qui disent que les tableaux
sont des pointeurs et ceux qui ne sont pas d'accord avec ça et
qui manquent d'arguments.
/* Questions 3:
Je ne comprends pas comment TabA qui a une valeur de renvoie avec
sizeof identique
tout au long du programme (normal ce n'est pas un pointeur :) ) et n
qui dans sa valeur
initiale est 9 et sa valeur volontairement modifiée renvoyée par n > p2 - TabA : 6 ...
ALORS QUE p2 sur ma machine a une valeur identique a TabA (chez moi
591036) au debut du déroulement
du programme mais qui est modifiée à partir de "Juste pour info 3" et
qui donne (chez moi) : 591060 alors
la question est comment est ce que dans les boucles correspondantes
591060< 591036 + 6 ???
Au tout début du programme : le second argument de la boucle est p1<
TabA + n soit
sur mon système : 591036< 591036 + 9 .
Là, je trouve que c'est cohérent mais avec p2, j'ai du mal à
comprendre.
Je dois aussi avouer que ces nombre 591036, 591060 ne me parlent pas
beaucoup. Je crois il s'agit de l'affichage
avec une valeur entier d'une adresse dans le buffer. C'est unique à un
instant t a ce qui est dans la mémoire du système.
Par curiosité, s'agit-il de heap ou ou stack ?
Il y a diverses questions dans à l'intérieur du code ci-dessous :
#include <stdio.h>
int main(void)
{
int TabA[] = { 31, 62, 17, 28, 45, 62, 34, 22, 62 } ;
int *p1 = TabA ;
int *p2 = TabA ;
int n ;
int nbr ;
printf("nnEcrire un programme qui lit un entier nbr et un rayon
d'entiers TabA n"
"du type int au clavier et élimine toutes les occurrenc es de nbr dans
TabA n"
"en tassant les éléments restants. Le programme utili sera n"
"les pointeurs p1 et p2 pour parcourir le rayon.n") ;
n = sizeof(TabA) / sizeof(int) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnnUST FOR INFO 1 n(juste apres l'affectation et
l'initialisation des valeurs et variables) : n" ) ;
printf("------------------------------------------------- --------
n") ;
printf("nTaille de int : %dn", sizeof(int)) ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nn") ;
printf("Affichage du rayon de valeurs int non modifie : nn") ;
for ( p1 ; p1 < TabA+n ; p1++ )
printf("%dt", *p1) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 2 n(apres l'affichage des vale urs avec le
pointeur p1) : n" ) ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nnEntrez un entier a supprimer : n") ;
nbr = 62 ;
printf("...n") ;
printf("Le nombre est : %d nn", nbr) ;
for ( p1 = TabA ; p1 < TabA+n ; p1++ )
{
*p2 = *p1 ;
if ( *p2 != nbr )
p2++ ;
}
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 3 n(apres la recherche de la v aleur a
supprimer avec les pointeur p1 et p2) : n"
"et apres l'affectation du tableau sans la valeur dans p2 .n") ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/***************************************************
Question 1:
A ce niveau, si je boucle avec p2, les valeurs renvoyees sont :
("n" n'a pas été redimensionné)
{ 31, 17, 28, 45, 34, 22, 62, 22, 62 }
printf("np2: n" ) ;
for ( p2 = TabA ; p2 < TabA+n ; p2 ++ )
printf("%dt", *p2 ) ;
Les valeurs renvoyees sont toujours au nombre de 10 comme lors de
leur initialisation
mais a partir de l'indice 6 soit 22, je ne comprends p as les valeurs
que je retrouve
après cet indice soit 62, 22, 62.
***************************************************/
/* Reprise du programme */
n = p2 - TabA ;
printf("nnAffichage du nouveau rayon de valeurs int : nn") ;
for ( p2 = TabA ; p2 < TabA+n ; p2++ )
printf("%dt", *p2) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 5 n(apres l'affichage du resul tat avec
p2) : n"
""n" a ete redimensionne et p2 remis au debut du rayon n") ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nn") ;
return 0 ;
}
/* Questions 2:
printf("nTaille de P1 divise par int : %dn", sizeof(p1)/4) ;
- Pourquoi sizeof(p1) renvoie 1 ?
--- alors que sizeof(TabA)/4), renvoie 9 ?
--- en fait sizeof ne fonctionne pas avec les pointeurs ???
--- seulement il y a un débat entre ceux qui disent que les tableaux
sont des pointeurs et ceux qui ne sont pas d'accord avec ça et
qui manquent d'arguments.
/* Questions 3:
Je ne comprends pas comment TabA qui a une valeur de renvoie avec
sizeof identique
tout au long du programme (normal ce n'est pas un pointeur :) ) et n
qui dans sa valeur
initiale est 9 et sa valeur volontairement modifiée renvoyée par n =
p2 - TabA : 6 ...
ALORS QUE p2 sur ma machine a une valeur identique a TabA (chez moi
591036) au debut du déroulement
du programme mais qui est modifiée à partir de "Juste pour info 3" et
qui donne (chez moi) : 591060 alors
la question est comment est ce que dans les boucles correspondantes
591060 < 591036 + 6 ???
Au tout début du programme : le second argument de la boucle est p1 <
TabA + n soit
sur mon système : 591036 < 591036 + 9 .
Là, je trouve que c'est cohérent mais avec p2, j'ai du mal à
comprendre.
Je dois aussi avouer que ces nombre 591036, 591060 ne me parlent pas
beaucoup. Je crois il s'agit de l'affichage
avec une valeur entier d'une adresse dans le buffer. C'est unique à un
instant t a ce qui est dans la mémoire du système.
Par curiosité, s'agit-il de heap ou ou stack ?
Il y a diverses questions dans à l'intérieur du code ci-dessous :
#include <stdio.h>
int main(void)
{
int TabA[] = { 31, 62, 17, 28, 45, 62, 34, 22, 62 } ;
int *p1 = TabA ;
int *p2 = TabA ;
int n ;
int nbr ;
printf("nnEcrire un programme qui lit un entier nbr et un rayon
d'entiers TabA n"
"du type int au clavier et élimine toutes les occurrenc es de nbr dans
TabA n"
"en tassant les éléments restants. Le programme utili sera n"
"les pointeurs p1 et p2 pour parcourir le rayon.n") ;
n = sizeof(TabA) / sizeof(int) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnnUST FOR INFO 1 n(juste apres l'affectation et
l'initialisation des valeurs et variables) : n" ) ;
printf("------------------------------------------------- --------
n") ;
printf("nTaille de int : %dn", sizeof(int)) ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nn") ;
printf("Affichage du rayon de valeurs int non modifie : nn") ;
for ( p1 ; p1 < TabA+n ; p1++ )
printf("%dt", *p1) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 2 n(apres l'affichage des vale urs avec le
pointeur p1) : n" ) ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nnEntrez un entier a supprimer : n") ;
nbr = 62 ;
printf("...n") ;
printf("Le nombre est : %d nn", nbr) ;
for ( p1 = TabA ; p1 < TabA+n ; p1++ )
{
*p2 = *p1 ;
if ( *p2 != nbr )
p2++ ;
}
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 3 n(apres la recherche de la v aleur a
supprimer avec les pointeur p1 et p2) : n"
"et apres l'affectation du tableau sans la valeur dans p2 .n") ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/***************************************************
Question 1:
A ce niveau, si je boucle avec p2, les valeurs renvoyees sont :
("n" n'a pas été redimensionné)
{ 31, 17, 28, 45, 34, 22, 62, 22, 62 }
printf("np2: n" ) ;
for ( p2 = TabA ; p2 < TabA+n ; p2 ++ )
printf("%dt", *p2 ) ;
Les valeurs renvoyees sont toujours au nombre de 10 comme lors de
leur initialisation
mais a partir de l'indice 6 soit 22, je ne comprends p as les valeurs
que je retrouve
après cet indice soit 62, 22, 62.
***************************************************/
/* Reprise du programme */
n = p2 - TabA ;
printf("nnAffichage du nouveau rayon de valeurs int : nn") ;
for ( p2 = TabA ; p2 < TabA+n ; p2++ )
printf("%dt", *p2) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 5 n(apres l'affichage du resul tat avec
p2) : n"
""n" a ete redimensionne et p2 remis au debut du rayon n") ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nn") ;
return 0 ;
}
/* Questions 2:
printf("nTaille de P1 divise par int : %dn", sizeof(p1)/4) ;
- Pourquoi sizeof(p1) renvoie 1 ?
--- alors que sizeof(TabA)/4), renvoie 9 ?
--- en fait sizeof ne fonctionne pas avec les pointeurs ???
--- seulement il y a un débat entre ceux qui disent que les tableaux
sont des pointeurs et ceux qui ne sont pas d'accord avec ça et
qui manquent d'arguments.
/* Questions 3:
Je ne comprends pas comment TabA qui a une valeur de renvoie avec
sizeof identique
tout au long du programme (normal ce n'est pas un pointeur :) ) et n
qui dans sa valeur
initiale est 9 et sa valeur volontairement modifiée renvoyée par n =
p2 - TabA : 6 ...
ALORS QUE p2 sur ma machine a une valeur identique a TabA (chez moi
591036) au debut du déroulement
du programme mais qui est modifiée à partir de "Juste pour info 3" et
qui donne (chez moi) : 591060 alors
la question est comment est ce que dans les boucles correspondantes
591060 < 591036 + 6 ???
Au tout début du programme : le second argument de la boucle est p1 <
TabA + n soit
sur mon système : 591036 < 591036 + 9 .
Là, je trouve que c'est cohérent mais avec p2, j'ai du mal à
comprendre.
Je dois aussi avouer que ces nombre 591036, 591060 ne me parlent pas
beaucoup. Je crois il s'agit de l'affichage
avec une valeur entier d'une adresse dans le buffer. C'est unique à un
instant t a ce qui est dans la mémoire du système.
Par curiosité, s'agit-il de heap ou ou stack ?
Il y a diverses questions dans à l'intérieur du code ci-dessous :
#include <stdio.h>
int main(void)
{
int TabA[] = { 31, 62, 17, 28, 45, 62, 34, 22, 62 } ;
int *p1 = TabA ;
int *p2 = TabA ;
int n ;
int nbr ;
printf("nnEcrire un programme qui lit un entier nbr et un rayon
d'entiers TabA n"
"du type int au clavier et élimine toutes les occurrenc es de nbr dans
TabA n"
"en tassant les éléments restants. Le programme utili sera n"
"les pointeurs p1 et p2 pour parcourir le rayon.n") ;
n = sizeof(TabA) / sizeof(int) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnnUST FOR INFO 1 n(juste apres l'affectation et
l'initialisation des valeurs et variables) : n" ) ;
printf("------------------------------------------------- --------
n") ;
printf("nTaille de int : %dn", sizeof(int)) ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nn") ;
printf("Affichage du rayon de valeurs int non modifie : nn") ;
for ( p1 ; p1 < TabA+n ; p1++ )
printf("%dt", *p1) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 2 n(apres l'affichage des vale urs avec le
pointeur p1) : n" ) ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nnEntrez un entier a supprimer : n") ;
nbr = 62 ;
printf("...n") ;
printf("Le nombre est : %d nn", nbr) ;
for ( p1 = TabA ; p1 < TabA+n ; p1++ )
{
*p2 = *p1 ;
if ( *p2 != nbr )
p2++ ;
}
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 3 n(apres la recherche de la v aleur a
supprimer avec les pointeur p1 et p2) : n"
"et apres l'affectation du tableau sans la valeur dans p2 .n") ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/***************************************************
Question 1:
A ce niveau, si je boucle avec p2, les valeurs renvoyees sont :
("n" n'a pas été redimensionné)
{ 31, 17, 28, 45, 34, 22, 62, 22, 62 }
printf("np2: n" ) ;
for ( p2 = TabA ; p2 < TabA+n ; p2 ++ )
printf("%dt", *p2 ) ;
Les valeurs renvoyees sont toujours au nombre de 10 comme lors de
leur initialisation
mais a partir de l'indice 6 soit 22, je ne comprends p as les valeurs
que je retrouve
après cet indice soit 62, 22, 62.
***************************************************/
/* Reprise du programme */
n = p2 - TabA ;
printf("nnAffichage du nouveau rayon de valeurs int : nn") ;
for ( p2 = TabA ; p2 < TabA+n ; p2++ )
printf("%dt", *p2) ;
/* code intermédiaire pour comprendre le déroulement du prg */
printf("nnJUST FOR INFO 5 n(apres l'affichage du resul tat avec
p2) : n"
""n" a ete redimensionne et p2 remis au debut du rayon n") ;
printf("------------------------------------------------- --------
n") ;
printf("nnn = %dtp1 = %dtp2 = %dtTabA = %dn ", n, p1, p2,
TabA) ;
/* Reprise du programme */
printf("nn") ;
return 0 ;
}
/* Questions 2:
printf("nTaille de P1 divise par int : %dn", sizeof(p1)/4) ;
- Pourquoi sizeof(p1) renvoie 1 ?
--- alors que sizeof(TabA)/4), renvoie 9 ?
--- en fait sizeof ne fonctionne pas avec les pointeurs ???
--- seulement il y a un débat entre ceux qui disent que les tableaux
sont des pointeurs et ceux qui ne sont pas d'accord avec ça et
qui manquent d'arguments.
/* Questions 3:
Je ne comprends pas comment TabA qui a une valeur de renvoie avec
sizeof identique
tout au long du programme (normal ce n'est pas un pointeur :) ) et n
qui dans sa valeur
initiale est 9 et sa valeur volontairement modifiée renvoyée par n =
p2 - TabA : 6 ...
ALORS QUE p2 sur ma machine a une valeur identique a TabA (chez moi
591036) au debut du déroulement
du programme mais qui est modifiée à partir de "Juste pour info 3" et
qui donne (chez moi) : 591060 alors
la question est comment est ce que dans les boucles correspondantes
591060 < 591036 + 6 ???
Au tout début du programme : le second argument de la boucle est p1 <
TabA + n soit
sur mon système : 591036 < 591036 + 9 .
Là, je trouve que c'est cohérent mais avec p2, j'ai du mal à
comprendre.
Je dois aussi avouer que ces nombre 591036, 591060 ne me parlent pas
beaucoup. Je crois il s'agit de l'affichage
avec une valeur entier d'une adresse dans le buffer. C'est unique à un
instant t a ce qui est dans la mémoire du système.
Par curiosité, s'agit-il de heap ou ou stack ?
| file_t pourrait rester une structure opaque, ce qui en ferait un type
| abstrait non contrôlable par l'utilisateur. Bref ça changerait peu la
| situation actuelle, sauf la possibilité d'éviter l'inclusion de
|<stdio.h>
pouvoir voudrais-tu insister que FILE soit une structure?
|<stdio.h> ici n'est qu'un exemple, et sans doute pas le meilleur. Bien
| sûr les compilateurs ont leur part de responsabilité dans le temps de
| compilation, et il existe des techniques bien connues (en-têtes
| précompilés par exemple) pour accélérer leur performance. Néanmoins je
| pense que les programmeurs ont aussi leur part de responsabilité et il
| est souvent possible de fournir, à fonctionnalité équivalente, un code
| plus rapide à compiler.
La premiere responsabilite du programmeur devrait d'etre d'ecrire des
programmes simples et corrects. C'est deja suffisamment dur comme cela.
C'est non-professionnel de chercher des elaborations sur des details
imagines sans evidence d'impactes reels.
| file_t pourrait rester une structure opaque, ce qui en ferait un type
| abstrait non contrôlable par l'utilisateur. Bref ça changerait peu la
| situation actuelle, sauf la possibilité d'éviter l'inclusion de
|<stdio.h>
pouvoir voudrais-tu insister que FILE soit une structure?
|<stdio.h> ici n'est qu'un exemple, et sans doute pas le meilleur. Bien
| sûr les compilateurs ont leur part de responsabilité dans le temps de
| compilation, et il existe des techniques bien connues (en-têtes
| précompilés par exemple) pour accélérer leur performance. Néanmoins je
| pense que les programmeurs ont aussi leur part de responsabilité et il
| est souvent possible de fournir, à fonctionnalité équivalente, un code
| plus rapide à compiler.
La premiere responsabilite du programmeur devrait d'etre d'ecrire des
programmes simples et corrects. C'est deja suffisamment dur comme cela.
C'est non-professionnel de chercher des elaborations sur des details
imagines sans evidence d'impactes reels.
| file_t pourrait rester une structure opaque, ce qui en ferait un type
| abstrait non contrôlable par l'utilisateur. Bref ça changerait peu la
| situation actuelle, sauf la possibilité d'éviter l'inclusion de
|<stdio.h>
pouvoir voudrais-tu insister que FILE soit une structure?
|<stdio.h> ici n'est qu'un exemple, et sans doute pas le meilleur. Bien
| sûr les compilateurs ont leur part de responsabilité dans le temps de
| compilation, et il existe des techniques bien connues (en-têtes
| précompilés par exemple) pour accélérer leur performance. Néanmoins je
| pense que les programmeurs ont aussi leur part de responsabilité et il
| est souvent possible de fournir, à fonctionnalité équivalente, un code
| plus rapide à compiler.
La premiere responsabilite du programmeur devrait d'etre d'ecrire des
programmes simples et corrects. C'est deja suffisamment dur comme cela.
C'est non-professionnel de chercher des elaborations sur des details
imagines sans evidence d'impactes reels.
> > - Pourquoi sizeof(p1) renvoie 1 ?
Tu veux probablement dire 4 ou alors il s'agit de sizeof(p1)/4.
Probablement parce que sur ta machine, la taille d'un pointeur est la
même que la taille d'un int. C'est anecdotique et sans intérêt...
> > - Pourquoi sizeof(p1) renvoie 1 ?
Tu veux probablement dire 4 ou alors il s'agit de sizeof(p1)/4.
Probablement parce que sur ta machine, la taille d'un pointeur est la
même que la taille d'un int. C'est anecdotique et sans intérêt...
> > - Pourquoi sizeof(p1) renvoie 1 ?
Tu veux probablement dire 4 ou alors il s'agit de sizeof(p1)/4.
Probablement parce que sur ta machine, la taille d'un pointeur est la
même que la taille d'un int. C'est anecdotique et sans intérêt...
Gabriel Dos Reis wrote:| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Je ne crois pas que getc et putc soient forcément des macros, c'est juste
une possibilité.
Gabriel Dos Reis wrote:
| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Je ne crois pas que getc et putc soient forcément des macros, c'est juste
une possibilité.
Gabriel Dos Reis wrote:| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Je ne crois pas que getc et putc soient forcément des macros, c'est juste
une possibilité.
Il y a meme certaines bibliotheques qui te mettent des valeurs rigolotes
en hexa dans la memoire apres un free. je pense en particulier au
classique: 0xDEADBEEF
Il y a meme certaines bibliotheques qui te mettent des valeurs rigolotes
en hexa dans la memoire apres un free. je pense en particulier au
classique: 0xDEADBEEF
Il y a meme certaines bibliotheques qui te mettent des valeurs rigolotes
en hexa dans la memoire apres un free. je pense en particulier au
classique: 0xDEADBEEF
En fait, si je commence à comprendre, avec les pointeurs, dans un
tableau de valeurs, on ne parle pas d'indices mais d'adresses?
L'indice d'un tableau "classique" commence souvent à 0 alors que
l'indice d'un pointeur sur un tableau commence à une adresse exprimée
sous forme hexadécimale avec par exemple 0x001 pour la première valeu r
et 0x002 pour la seconde. Les valeurs hexadécimales sont bien les
emplacements mémoire?
En fait, si je commence à comprendre, avec les pointeurs, dans un
tableau de valeurs, on ne parle pas d'indices mais d'adresses?
L'indice d'un tableau "classique" commence souvent à 0 alors que
l'indice d'un pointeur sur un tableau commence à une adresse exprimée
sous forme hexadécimale avec par exemple 0x001 pour la première valeu r
et 0x002 pour la seconde. Les valeurs hexadécimales sont bien les
emplacements mémoire?
En fait, si je commence à comprendre, avec les pointeurs, dans un
tableau de valeurs, on ne parle pas d'indices mais d'adresses?
L'indice d'un tableau "classique" commence souvent à 0 alors que
l'indice d'un pointeur sur un tableau commence à une adresse exprimée
sous forme hexadécimale avec par exemple 0x001 pour la première valeu r
et 0x002 pour la seconde. Les valeurs hexadécimales sont bien les
emplacements mémoire?
On 16 sep, 12:57, ""
wrote:En fait, si je commence à comprendre, avec les pointeurs, dans un
tableau de valeurs, on ne parle pas d'indices mais d'adresses?
Si on veut...L'indice d'un tableau "classique" commence souvent à 0 alors que
l'indice d'un pointeur sur un tableau commence à une adresse exprimée
Dans ce cas, on ne parle pas d'indice, mais d'adresse...sous forme hexadécimale avec par exemple 0x001 pour la première valeur
et 0x002 pour la seconde. Les valeurs hexadécimales sont bien les
emplacements mémoire?
Le fait que la valeur soit exprimée en hexadécimale est juste pour
rappeler que ce n'est pas pour les débutants ! Une valeur interne est
toujours codée en binaire sur nos machines 'binaires'...
On 16 sep, 12:57, "bpascal...@googlemail.com"
<bpascal...@googlemail.com> wrote:
En fait, si je commence à comprendre, avec les pointeurs, dans un
tableau de valeurs, on ne parle pas d'indices mais d'adresses?
Si on veut...
L'indice d'un tableau "classique" commence souvent à 0 alors que
l'indice d'un pointeur sur un tableau commence à une adresse exprimée
Dans ce cas, on ne parle pas d'indice, mais d'adresse...
sous forme hexadécimale avec par exemple 0x001 pour la première valeur
et 0x002 pour la seconde. Les valeurs hexadécimales sont bien les
emplacements mémoire?
Le fait que la valeur soit exprimée en hexadécimale est juste pour
rappeler que ce n'est pas pour les débutants ! Une valeur interne est
toujours codée en binaire sur nos machines 'binaires'...
On 16 sep, 12:57, ""
wrote:En fait, si je commence à comprendre, avec les pointeurs, dans un
tableau de valeurs, on ne parle pas d'indices mais d'adresses?
Si on veut...L'indice d'un tableau "classique" commence souvent à 0 alors que
l'indice d'un pointeur sur un tableau commence à une adresse exprimée
Dans ce cas, on ne parle pas d'indice, mais d'adresse...sous forme hexadécimale avec par exemple 0x001 pour la première valeur
et 0x002 pour la seconde. Les valeurs hexadécimales sont bien les
emplacements mémoire?
Le fait que la valeur soit exprimée en hexadécimale est juste pour
rappeler que ce n'est pas pour les débutants ! Une valeur interne est
toujours codée en binaire sur nos machines 'binaires'...
Il y a meme certaines bibliotheques qui te mettent des valeurs rigolotes
en hexa dans la memoire apres un free. je pense en particulier au
classique: 0xDEADBEEF
Il y a meme certaines bibliotheques qui te mettent des valeurs rigolotes
en hexa dans la memoire apres un free. je pense en particulier au
classique: 0xDEADBEEF
Il y a meme certaines bibliotheques qui te mettent des valeurs rigolotes
en hexa dans la memoire apres un free. je pense en particulier au
classique: 0xDEADBEEF
| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Je ne crois pas que getc et putc soient forcément des macros, c'est juste
une possibilité.
L'intérêt d'avoir fgetc et getc, fputc et putc, c'est la lattitude donnée à
getc et putc quand elles sont implémentées comme macro de pouvoir évaluer
plusieurs fois leurs arguments.
| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Je ne crois pas que getc et putc soient forcément des macros, c'est juste
une possibilité.
L'intérêt d'avoir fgetc et getc, fputc et putc, c'est la lattitude donnée à
getc et putc quand elles sont implémentées comme macro de pouvoir évaluer
plusieurs fois leurs arguments.
| Techniquement il est très rare que FILE soit un véritable type opaque,
| car pour implémenter les macros getc()et putc(), on a besoin des
| éléments de la structure...
Je ne crois pas que getc et putc soient forcément des macros, c'est juste
une possibilité.
L'intérêt d'avoir fgetc et getc, fputc et putc, c'est la lattitude donnée à
getc et putc quand elles sont implémentées comme macro de pouvoir évaluer
plusieurs fois leurs arguments.