関数を使うときにポインタが必要になるのはなんで? プログラム例その一 †[edit]以下のプログラムを実行したときには計算機の中でどんな処理が行われるのか見てみましょう. 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 } step1 7行目 †[edit]5 int a, b; 6 --> 7 a = 7; b = 3; 8 hoge(a, b); 9 printf("%d %d\n", a, b);
step2 8行目 †[edit]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 }
step3 12行目 †[edit]--> 12 void hoge(int x, int y) 13 { 14 y = x + y; 15 printf("%d %d\n", x, y); 16 }
step4 14行目 †[edit]12 void hoge(int x, int y) 13 { --> 14 y = x + y; 15 printf("%d %d\n", x, y); 16 }
step5 15行目 †[edit]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 }
step6 9行目 †[edit]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 }
step7 実行結果 †[edit]以上の実行の結果は 7 10 ← 15行目のprintf()の出力 7 3 ← 9行目のprintf()の出力 となる. この場合,関数hoge()が受け取った値をいくらいじっても,元の世界(main()の世界)には反映されない. |