C言語なら俺に聞け 163 (975レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
222(8): デフォルトの名無しさん (ワッチョイ d7cd-qbvN) [sage] 2024/09/18(水) 00:42:28.78 ID:wcwImUMc0(1/3) AAS
>>217217(1): デフォルトの名無しさん (アウアウエー Sadf-N1Zj) [] 2024/09/17(火) 13:07:46.14 ID:TMGdiCOOa(2/2) AAS
>>214
そんなことは判ってるよ
(char hage[10]) で hage++ または ++hage 出来ちゃってる(ように観える)のが問題なんでしょ
関数の引数は (char hage[]) または (char *hage) のみにすれば良かった
(char hage[10]) はどうみても蛇足(結局境界テストされてないし)
この場合に限らずcでは範囲チェックなどされないでしょ
必要なら自分でチェックするのが原則
void aaa(char hage[10],int idx)
{
if((UINT)idx < sizeof(hage)/sizeof(hage[0]))
printf("%d=%d¥n",idx,hage[idx]);
else
printf("%dは範囲外だhage¥n",idx);
}
これなら[10]に意味が出る
236: デフォルトの名無しさん (ワッチョイ d7cd-qbvN) [sage] 2024/09/18(水) 16:33:08.44 ID:wcwImUMc0(2/3) AAS
>>224ああそうなの
昔のことだから記憶違いをしてたようだ
238(1): デフォルトの名無しさん (ワッチョイ d7cd-qbvN) [sage] 2024/09/18(水) 18:00:34.97 ID:wcwImUMc0(3/3) AAS
'ここの10は意味ありませんよ'
って警告を出してもいいじゃんってことでしょ
それなら例えば
typedef char HAGE_TBL[10];
void foo(HAGE_TBL hage) {}
(毎回10とか書くのは危険なのでこういう使い方が多いと思う)
などとした場合に毎回警告が出てうざいことになるんじゃないか
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.599s*