Bases de la programmation en C
void f(int x) { x = 10; }
void g(int *p) { *p = 20; }
int main(void) {
int a = 1, b = 1;
f(a);
g(&b);
printf("%d %d\n", a, b);
return 0;
}Quelle est la sortie obtenue en exécutant le programme ci-dessus ?
- A1 20
- B10 1
- C10 20
Afficher la réponse et l'explication
Réponse : A. 1 20
En C, les arguments des fonctions sont passés par valeur : l'appel f(a) copie la valeur 1 de a dans x. Mettre x à 10 dans f ne modifie que cette copie, et le a de l'appelant reste à 1. g(&b) passe l'adresse de b : *p = 20 dans g écrit donc dans b lui-même, et b passe à 20. Pour modifier une variable de l'appelant à l'intérieur d'une fonction appelée, on passe ainsi un pointeur.
Continuer : 9 autres questions sur Bases de la programmation en C