• ベストアンサー

配列のNULL初期化について

C言語についての課題の一部です。 int型の配列 iArrayをNULL初期化したいのですが、 課題では下のように書かれています。 &iArray[] = NULL; このような書き方でNULL初期化することは可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • takke70
  • ベストアンサー率100% (1/1)
回答No.3

>NULL初期化することは可能なのでしょうか? できません。文法上間違っています。 また、NULLはint型の値ではないので、「NULLで初期化する」とは言いません。 ちなみにiArrayを0で初期化する場合は下記のようになります。 int iArray[5]; int i; for (i=0; i<sizeof(iArray)/sizeof(i); i++) { iArray[i] = 0; } 他にも色々な方法があります。参考まで。

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.2

そもそも、int型の配列を、NULLという「ポインター」で 初期化しようとする点において、正しくありません。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> このような書き方でNULL初期化することは可能なのでしょうか? 無理です。

関連するQ&A

  • 配列の初期化について

    今取り組んでいるC言語の課題の中で、 二次元配列"map[100][100]"を初期化するようにしたいのですが、 intでcomx,comyという二つの変数を宣言して、 for(comy=0;comy<100;comy++){   for(comx=0;comx<100;comx++){     map[comx][comy]=0;   } } のように初期化を図ったのですが、実行するとなぜか初期化が終わらず、 計算しっぱなしで止まってしまいます。(コンパイルは出来ます) 解る方、どこがおかしいのか指摘お願いします。。 (質問ミスっていたので質問し直しました)

  • 二次元配列の初期化が出来ません

    今取り組んでいるC言語の課題の中で、 二次元配列"map[100][100]"を初期化するようにしたいのですが、 intでcomx,comyという二つの変数を宣言して、 for(comy=0;comy<100;comy++){   for(comx=0;comx<100;comx++){     map[comx][comy]=0;   } } のように初期化を図ったのですが、実行するとなぜか初期化が終わらず、 計算しっぱなしで止まってしまいます。(コンパイルは出来ます) 解る方、どこがおかしいのか指摘お願いします。。

  • NULLで初期化

    C言語で char name[256]; のnameをNULLで初期化する場合どういう記述になりますか。

  • NULL

    C言語で、0の代入とNULLの代入はバイナリレベルでは同じ事だと聞いたのですが本当なんでしょうか? とすると int i = 0; と int i= NULL; は、同じ事なんでしょうか。 また、 if(!aaaa){ と if(aaaa == NULL){ は同じ条件文なんでしょうか?

  • NULLポインタは0と書かなければだめ?

    C++言語を使っています。 C++言語でNULLポインタを表す場合、0やNULLを使用しますが、 「NULLは単なるマクロなので本来は0を使わなければだめ」という話を聞きました。 つまり、 int *p = 0; が本当の正しいNULLポインタであり、 int *p = NULL; は推奨されていない(?)NULLポインタというようです。 今まであまり疑うことなく、NULLポインタを表すのにNULLを使用していましたが、 上記の内容は本当でしょうか。

  • 配列の初期化

    java初心者です 配列の初期化についてなのですが、たとえば String[] name = {"A","B","C","D","E","F","G","H","I","J"}; int[] age = {12,18,25,18,20,32,22,15,30,37,29,24}; とありこれを10代/20代/30代に分けるとして int[] age10 = new int[?]; int[] age20 = new int[?]; int[] age30 = new int[?]; と宣言したいのですが、?にはなにを入れればいいのでしょうか? int[] ageのところから自分で数えて4/5/3と入れるのは無しです。 お手数ですがアドバイスや解説おねがいしますm(_ _)m

    • ベストアンサー
    • Java
  • 配列の初期化子 { .......} について

    配列の初期化子について、以下のような事がありました。 1. 一般に教科書で言われている事ですが、int a[3]={1} ; で初期化すると a[0]=1,a[1]=0,a[2]=0と初期化子が与えられていない要素は0で初期子されます。 2. 今度は,意地悪く全ての要素に初期化子を与えない a[3]={ } ; で初期化すると a[0]=0.a[1]=0, a[2]=0. と全てが0で初期化されました。←問題点 3. 初期化子を与えない int a[3] ; では a[0] a[1] a[2] は当然ながら不定値で初期化されます。 1と3については教科書通りですが、2についてはどの様に説明する事ができるのでしょうか。 標準Cに規定があるのでしょうか。それとも環境(コンパイラ)によるものでしょうか。尚私はRed Hat Linuxを使っています。 宜しく願います。

  • 配列の初期化

    昨日書いたコードを今日ビルドして実行したところ、 以下のように初期化した配列に値が代入されなくなりました。 どうも初期化前に戻っているような感じです。 y = 0; x = 6; int point_y[20] = { 0 }; int point_x[20] = { 0 }; c = 0; point_y[c] = y; point_x[c] = x; c = c + 1; この時点で point_y[0] には0, point_x[0]には6が入ってほしいのですが point_y[c]にカーソルを当てて中身を見ると point_y[0] = 11372064; point_y[1] = 1742984488; といった具体です。point_x[c]の中身も同じような感じです。 何が原因か悩んでいます。 もしアドバイスいただけると助かります。 どうぞよろしくお願い致します。

  • C# 配列の変数宣言について。

    C#についての質問です。 新たなint型の配列dataを作るため変数宣言文を、以下のように書きました。 int[] data; すると、以下のような警告文が出ました。 『フィールド'IntArray.data'は割り当てられません。常に既定値nullを使用します。』 そこで調べてみたところ、「newしていないからこのような警告文が出る」ということがわかったので、以下のように書き換えました。 private int[] data = new int[]; すると今度は 『配列を作成するには、配列のサイズまたは配列の初期化子を指定する必要があります。』 というエラー文が出てしまいました。 このとき、配列のサイズも初期化子も指定したくない場合には、どのようにプログラムを書けば良いのでしょうか? お分かりになる方がいらっしゃいましたら、ご助言をお願いします。

  • 連想配列の初期化

    UNIXでAWKの連想配列を使っています。 連想配列を処理の途中で初期化したいのですが、どうすれば良いのでしょう? とりあえず今は以下のように初期化をしています。 for ( i in a ){a[i]="";} しかし、できれば a=null という感じに一発で初期化をしたいのです。