K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>「センス・オブ・プログラミング」読ませていただきました。 >読んで良かったと思いました。 >特に3章は共感する所が多くありました。 >私もコピペやっちゃうんですよね、そして後で後悔してますね。 >新人の頃に読めたらもっと何か違っていたかもと思いもしました。 > >ところで、可変長配列について説明(P153)がちょっと足りないのでは? >特に「Cに特有の話」の部分にかかります。 > >typedef struct _VARIABLEARRY { > int valMaxIndex; > char val[1]; // 1つの配列のインデックス値は本来0だけが有効。 > // char val[0]; の記述はコンパイラの実装により異なる。 >}VARIABLEARRY; > >たとえばこの場合 > >int maxIndex = 10; >VARIABLEARRY *pArry; >pArry = malloc( sizeof(VARIABLEARRY) + maxIndex ); >pArry->valMaxIndex = maxIndex; >pArry->val[1] = 'a'; // 配列のインデックス値が宣言した範囲を超えている。 > >の表記が許される事です。 >BASICでは配列のインデックス値が範囲を超えるとエラーです。 >Cではこれが間違いではありません。---① >また、構造体の最後のメンバを配列にする事でこれが可能である事です。---② > >typedef struct _VARIABLEARRY { > char val[1]; > int valMaxIndex; >}VARIABLEARRY; > >とした場合は正しく機能しません。 >この2点が「Cに特有の話」である事で、この説明が足りないと思いました。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!