次のC言語のプログラムをコンパイル・実行したときの結果として最も適切なものを@〜Dの中から選べ。
#include <stdio.h>
struct node {
int data;
struct node *refer;
};
main () {
struct node a;
a.data = 1;
a.refer = &a;
a.data = a.refer->data + 1;
printf("%d\n", a.data);
}
@ コンパイル時にエラーになる。
A 実行時にエラーになる。
B 無限に実行が続き、何も出力されない。
C 正常に実行終了するが、結果は不定である。
D 正常に実行終了し、2が出力される。
D
a.data = 1; ・・・a.dataに1を格納
a.refer = &a; ・・・ポインタreferに構造体 a のアドレスを格納。
a.data = a.refer->data + 1; ・・・ポインタが指し示すdataの値に1を加えて、a.data に格納 (1+1を格納)
printf("%d\n", a.data); ・・・2を出力
目次 | W−2 |