ホーム » 2012 » 8月 » 04

日別アーカイブ: 2012年8月4日

2012年8月
 1234
567891011
12131415161718
19202122232425
262728293031  

検索・リンク

キャンパスツアー2012

今日は、中学生向けのキャンパスツアー2012。 各卒研室や創造工学にて作成してきたシステムなどを、 色々と展示しています。

1208041551_320x240.jpg
1208041551-1_320x240.jpg

局所変数の配列初期化…

3年のプログラミング応用の採点中。 データのヒストグラムのプログラムで、カウンタ配列の初期化で、 以下の様な書き方があったけど、これじゃデータの0番目だけの初期化…と 減点をしていた。でも何人か同じ間違いしているし、改めて局所変数配列初期化を実験。

int main() {
int count[ 4 ] = { 0 } ; // count[0]=0,count[1]=?...
:
}

ということで、テストプログラム。

int main() {
int a[ 4 ] ;
printf( "%d %d %d %d¥n" , a[0] , a[1] , a[2] , a[3] ) ;
}
// 968937824 32767 0 0 との結果。
// しっかりゴミが入ってる。
int main() {
int a[ 4 ] = { 0 } ;
printf( "%d %d %d %d¥n" , a[0] , a[1] , a[2] , a[3] ) ;
}
// 0 0 0 0 おぅ、綺麗に0初期化されてら。

定数領域にa[4]全体の初期化データが作られていて、 静的データ領域は0で初期化されていて、 関数に入ってa[]の初期化時に、a[]の4件分の初期化データを memcpy しているんだろうな。

であれば、こんな書き方は?

int main() {
int a[ 4 ] = {} ; // 0件分の初期化だぞ...
printf( "%d %d %d %d¥n" , a[0] , a[1] , a[2] , a[3] ) ;
}
// 0 0 0 0 おぅ、綺麗に0初期化されてら...

ふん、K&Rは、動的配列の初期化なんて文法エラーだったんだぞ…

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー