こんどは以下のプログラム例を考えてみよう.
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()の世界)の値が直接いじられることになる.