以下のプログラムを実行したときには計算機の中でどんな処理が行われるのか見てみましょう.
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 }
5 int a, b; 6 --> 7 a = 7; b = 3; 8 hoge(a, b); 9 printf("%d %d\n", a, b);
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 }
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 }
以上の実行の結果は
7 10 ← 15行目のprintf()の出力 7 3 ← 9行目のprintf()の出力
となる.
この場合,関数hoge()が受け取った値をいくらいじっても,元の世界(main()の世界)には反映されない.