ホーム » スタッフ » 斉藤徹 » 講義録 » 情報構造論 » 前期中間テストの答案返却

2018年6月
« 5月   7月 »
 12
3456789
10111213141516
17181920212223
24252627282930

最近の投稿(電子情報)

アーカイブ

カテゴリー

前期中間テストの答案返却

前期中間試験の返却と解答の解説を行う。

今年の学生は、3年で私がプログラミング応用を担当していないので、私が例年3年に出題していた以下のような問題が苦手だろうということで、出題した問題。ポインタと構造体と配列が絡む問題は、式の意味を理解するためにも、C言語の演算子の優先順位などを踏まえ、こういった問題を知っておくべき。

また、上記のような問題では、C言語でのポインタと配列の意味を理解してもらうために、例年説明する極端なコーディングも紹介しておいた。

int a[5] = { 11 , 22 , 33 , 44 , 55 } ;
int* pi ;
pi = a + 2 ;
printf( "%d¥n" , *pi ) ;        // *( pointer + offset )
printf( "%d¥n" , pi[0] ) ;      // と pointer[ offset ] は同じ
printf( "%d¥n" , *(pi + 1) ) ;  // 44
printf( "%d¥n" , pi[ 1 ] ) ;    // 44
printf( "%d¥n" , (-1)[ pi ] ) ; // 22 = *( -1 + pi )
printf( "%c¥n" , "abcdef"[ 2 ] ) ; // c

「 printf( “%d¥n” , -1[ pi ] ) ; 」の結果が -44 になった。一瞬なんでや…って思ったけど、-( 1[pi] ) なのね。