こんどは以下のプログラム例を考えてみよう.
1 void hoge(int x, int *y); 2 3 main() 4 { 5 int a, b; 6 7 a = 7; b = 3; 8 hoge(a, &b); 9 printf("%d %d\n", a, b); 10 } 11 12 void hoge(int x, int *y) 13 { 14 *y = x + *y; 15 printf("%d %d\n", x, *y); 16 }
1 void hoge(int x, int *y); 2 3 main() 4 { 5 int a, b; 6 7 a = 7; b = 3; --> 8 hoge(a, &b); 9 printf("%d %d\n", a, b); 10 } 11 12 void hoge(int x, int *y) 13 { 14 *y = x + *y; 15 printf("%d %d\n", x, *y); 16 }
--> 12 void hoge(int x, int *y) 13 { 14 *y = x + *y; 15 printf("%d %d\n", x, *y); 16 }
12 void hoge(int x, int *y) 13 { --> 14 *y = x + *y; 15 printf("%d %d\n", x, *y); 16 }
12 void hoge(int x, int *y) 13 { 14 *y = x + *y; --> 15 printf("%d %d\n", x, *y); 16 }
1 void hoge(int x, int *y); 2 3 main() 4 { 5 int a, b; 6 7 a = 7; b = 3; 8 hoge(a, &b); --> 9 printf("%d %d\n", a, b); 10 } 11 12 void hoge(int x, int *y) 13 { 14 *y = x + *y; 15 printf("%d %d\n", x, *y); 16 }
以上の実行の結果は
7 10 ← 15行目のprintf()の出力 7 10 ← 9行目のprintf()の出力
となる.関数hoge()がポインタとして番地を受け取った変数については,元の世界(main()の世界)の値が直接いじられることになる.