Si C ne supporte pas le passage d’une variable par référence, pourquoi cela fonctionne-t-il ?
Sortie
$ gcc -std = c99 test.c $ a.exe j’ai = 21
Si C ne supporte pas le passage d’une variable par référence, pourquoi cela fonctionne-t-il ?
$ gcc -std = c99 test.c $ a.exe j’ai = 21
Ton exemple fonctionne parce que vous êtes de passage à l'adresse de la variable à une fonction qui manipule sa valeur avec l' opérateur de déréférencement.
Tandis que le C ne prend pas en charge les types de données de référence, vous pouvez toujours simuler le passage par référence explicitement en passant le pointeur de valeurs, comme dans votre exemple.
La référence C++ type de données est moins puissant, mais considéré comme plus sûr que le type de pointeur hérité de C. Ce serait votre exemple, adapté pour une utilisation en C++ références:
void f(int &j) {
j++;
}
int main() {
int i = 20;
f(i);
printf("i = %d\n", i);
return 0;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.