本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成19年度 技術士第一次試験問題【専門科目】

W−1

次の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