void getnums(int *a, int *b); int main() { int a; int b; int c; getnums(&a,&b); c = a + b; printf("a + b = %d\n", c); return 0; } void getnums(int *a, int *b) { printf("a:? "); scanf("%d", a); printf("b:? "); scanf("%d", b); }
Pourquoi n’ai-je pas besoin de l’esperluette avant les a et b dans le scanfs? (Le code fonctionne actuellement.)
Parce que scanf
prend les pointeurs comme arguments (pour qu’il sache quelle variable modifier), et a
et b
sont déjà des pointeurs.
Chaque fois que nous scan
une entrée, un emplacement de mémoire (c’est-à-dire une adresse) est nécessaire pour stocker cette valeur. Pour les variables simples, nous devons utiliser &
ampersand pour fournir cette adresse.
Ici, dans les fonctions getnums
, a
et b
sont des pointeurs, ils contiendront donc déjà l’adresse, donc pas besoin d’écrire &
de donner l’adresse.