Salut!
J'ai fait des tests avec "scanf" et me suis aperçu de choses "étranges":
m'affiche 0 puis la valeur entrée; rien de plus normal: "t" est l'adresse du 1er élément du tableau "t", donc de t[0].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int t[1]={0}; printf("%d\n",t[0]); scanf("%d",t); printf("%d\n",t[0]);
Mais:
me donne le même résultat!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int t[1]={0}; printf("%d\n",t[0]); scanf("%d",&t); printf("%d\n",t[0]);
Je me suis donc dit que l'on ne pouvait pas modifier l'adresse d'une variable précédemment déclarée ce qui semble sensé; et en effet:
m'affiche 2 fois la même chose, donc on ne peut pas toucher à l'adresse d'une variable, ici en l'occurence le pointeur "t".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int t[1]={0}; printf("%d\n",&t); scanf("%d",&t); printf("%d\n",&t);
Donc je me dit, "scanf" est "intelligent" et fait comme si j'avais mit: "t" tout court et pas "&t" qui n'a pas de sens car on ne peut modifier l'adresse d'une variable.
Donc question:
Est-ce que scanf est réellement "intelligent" et analyse ses arguments en ne faisant que des choses "sensée" pour éviter plantage et comportements indéterminés?
Merci de vos explications.
Partager