SSブログ

Cの配列とポインタの問題 [コンピューター]

 巷はどこもかしこもコロナウイルス対策で自宅待機状態なので、暇つぶしにCの配列に関するポインタの問題を作ってみました。「Cの配列とポインタの関係なんて、とっくの昔に理解したよ!!」という方は、以下の(ア)〜(ハ)の穴埋め問題をやってみてください。一つでも不安のある箇所がある方は、恐らくまだCの配列とポインタの関係を理解できていないと思います。
 
 
(1) int a[3] = {0, 1, 2};
 
で、sizeof(int)=4Bの場合、sizeof(a)は(ア)であり、この場合のaの型は(イ)である。
また、aは配列の先頭要素へのポインタの意味も持ち、&aの型は(ウ)であり、&a=0x7ffeebfbff49c の場合、&a+1のアドレスは(エ)になる。
また、aの型は(オ)であり、a=0x7ffeebfbff49c の場合、a+1のアドレスは(カ)になる。
 
 
(2) int a[5][3] = {
          {0, 1, 2},
                           {3, 4, 5},
                           {6, 7, 8},
                           {9, 10, 11},
                           {12, 13, 14}};
 
で、sizeof(int)=4Bの場合、sizeof(a)は(キ)であり、この場合のaの型は(ク)である。
また、aは配列の先頭要素へのポインタの意味も持ち、&aの型は(ケ)であり、&a=0x7ffeebfbff460 の場合、&a+1のアドレスは(コ)になる。
また、aの型は(サ)であり、a=0x7ffeebfbff460 の場合、a+1のアドレスは(シ)になる。
また、a[0]の型は(ス)であり、a[0]=0x7ffeebfbff460 の場合、a[0]+1のアドレスは(セ)になる。
また、*(*(a+3)+2)の値は(ソ)である。
 
 
(3) int a[3][4][2] = {
                               {{0, 1}, {2, 3}, {4, 5}, {6, 7}},
                               {{8, 9}, {10, 11}, {12, 13}, {14, 15}},
                               {{16, 17}, {18, 19}, {20, 21}, {22, 23}}};
 
で、sizeof(int)=4Bの場合、 sizeof(a)は(タ)であり、この場合のaの型は(チ)である。
また、aは配列の先頭要素へのポインタの意味も持ち、&aの型は(ツ)であり、&a=0x7ffeebfbff430 の場合、&a+1のアドレスは(テ)になる。
また、aの型は(ト)であり、a=0x7ffeebfbff430 の場合、a+1のアドレスは(ナ)になる。
また、a[0]の型は(ニ)であり、a[0]=0x7ffeebfbff430 の場合、a[0]+1のアドレスは(ヌ)になる。
また、(*(a[2]+3))[1]の値は(ネ)である。
また、a[0][0]の型は(ノ)であり、a[0][0]=0x7ffeebfbff430 の場合、a[0][0]+1のアドレスは(ハ)になる。
 
 
 不安な箇所は、実際に自分でプログラムを書いて確認してみると良いと思います。
 
by  チイ


nice!(0)  コメント(0) 
共通テーマ:学問

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。