次のC言語のプログラムを実行することを考える。
int a=1; int b=2; int c=3;
void f(int x, int y, int z) {
int b=0;
a=a+x; b=b+y; c=c+z;
printf("%d,%d,%d,", a, b, c);
}
main() {
int a;
a=10; b=20; c=30;
f(100,200,300);
printf("%d,%d,%d\n", a, b, c);
}
@ 101,200,330,10,20,330
A 101,200,330,101,200,330
B 101,202,303,10,20,30
C 110,220,330,10,20,330
D 110,220,330,110,220,330
@
main関数で使われる変数は以下の通り。
a:main関数
b:外部変数
c:外部変数
関数 f で使われる変数は以下の通り。
a:外部変数
b:関数 f
c:外部変数
便宜上、
外部変数を A, B, C
関数 f のローカル変数を b
main関数のローカル変数を a
と表すと、以下のように変数の値が変化していく。
まずは外部変数に値が入る。 ・・・ A=1; B=2; C=3;
main:
a=10; B=20; C=30;
f:
b=0
A=A+x; b=b+y; C=C+z; ・・・ A=1+100, b=0+200, C=30+300
printf("%d,%d,%d,", A, b, C); ・・・ 101,200,330
main:
printf("%d,%d,%d\n", a, B, C); ・・・ 10,20,330
W−3 | 目次 | W−5 |