文字列のインデクスを指定しただけ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kei

文字列のインデクスを指定しただけ

#1

投稿記事 by kei » 15年前

プログラムでどうしても気になることがあったので質問させていただきます。

既存のプログラムを見て勉強していたのですが、文字列でインデックスの値を
指定しただけのものがありました。

c_buff[sizeof(*)];

*には宣言された変数が入るので[/url]の中は数値になります。

char c_buff[128];
で宣言されており、文字列のある場所を指定したのだろうと推測できるのですが
文字を代入するわけでもなく";"で終わっています。


まったく意味のないコードではないかと思っているのですが、何か意味があるのではないかと気になっています。
PGを長くしていると、文字列のインデックスを指定しただけのコードに何か意味を持たせたりするのでしょうか?

softya

Re:文字列のインデクスを指定しただけ

#2

投稿記事 by softya » 15年前

どこの部分のソースコードでしょうか?
みんながみんなソースコードを暗記しているわけではないので、サイトのどの部分か書いてもらわないと応えられないんですよ。サイトへのリンクを書いてもらうのが一番ですね。

char c_buff[128];
だけの情報では、128文字分のc_buff配列が宣言されているとしか分かりません。

たいちう

Re:文字列のインデクスを指定しただけ

#3

投稿記事 by たいちう » 15年前

解釈1 keiさんの勘違い

宣言と同時に代入をしなくてはならないと勘違いされているわけではないですよね?
c_buffがどこかで使われていませんか?


解釈2 おまじない

char dummy[1024]; /* この変数を削除すると異常動作するので、絶対に削除しないこと! */

幸い私は遭遇したことがありませんが、このようなコメントが存在するらしいです。
全く使っていない変数の有無が動作に影響を及ぼすことがあります。
一般にはこのような場合は、たまたま正常に動いているだけと評価され
デバッグされるべきですが、何らかの事情によってごまかしているわけです。

たかぎ

Re:文字列のインデクスを指定しただけ

#4

投稿記事 by たかぎ » 15年前

> 幸い私は遭遇したことがありませんが、このようなコメントが存在するらしいです。

よくある話です。
ほかには、printfデバッグのために入れていたprintfを取り除くとRelease版で誤動作するので削除不可とか。
(printfがOutputDebugStringとか、他の関数の場合もあり)

そんなコードを書いた連中は、「だから最適化は怖い」とか、わかったようなことを自信満々で主張し、挙句、その間違った解釈をもとにコーディング規約を作ってみたりします。

nicma

Re:文字列のインデクスを指定しただけ

#5

投稿記事 by nicma » 15年前

配列のサイズが想定内であるかわざと配列の要素を参照していて、
もし想定外ならばメモリの不正参照となってアプリケーションエラーとなることを
期待しているのではないでしょうか。
要するに保険です。
当然、不正参照でもエラーにならない可能性はありますが。

閉鎖

“C言語何でも質問掲示板” へ戻る