C言語なら俺に聞け 163 (987レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
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]に意味が出る
224(1): デフォルトの名無しさん (ワッチョイ d712-IGT5) [sage] 2024/09/18(水) 05:59:54.60 ID:Y3+kk9yU0(1) AAS
>>222
c faq 6.21 (英文が詳しい)
外部リンク[html]:c-faq.com
>>207 の'調整'は'adjust'だろう
N1256を'adjust'で検索するのじゃ
Look, a new day has begun.
229: 警備員[Lv.2][新芽] (ワッチョイ bfd9-/vo+) [sage] 2024/09/18(水) 13:08:51.24 ID:eTGNACyx0(1/2) AAS
>>222
sizeof(hage) で配列のサイズが求まるの?
と思ったら、「char * (ポインタ)の大きさを返すよ」みたいな警告が @gcc
233(1): デフォルトの名無しさん (スプッッ Sd3f-2MD7) [] 2024/09/18(水) 14:54:11.13 ID:LEoKOQZWd(1/5) AAS
>>222
>この場合に限らず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]に意味が出る
printf("%uz\n", sizeof(hage)/sizeof(hage[0]));
の結果ってどんな値表示されるの?
237: デフォルトの名無しさん (スプッッ Sd3f-2MD7) [] 2024/09/18(水) 16:43:30.74 ID:LEoKOQZWd(3/5) AAS
>>235235(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ d7e2-6w0d) [sage] 2024/09/18(水) 15:47:33.09 ID:3rwci13t0(1) AAS
>>233
sizeof(char*)/sizeof(char) ということになる。
sizeof(char) は確実に 1 だから結果としては単に char* のバイト数ってことだね。
この場合は「『もし 10 に意味があるとしても』境界チェックはされないことに変わりないのでなんの役にも立ってない。 役に立てるとしたらここまで書かなきゃならない」というのが主旨なのであくまでもしもの話。
実際の値はどうでもよい文脈だと思う。
>>222 の「これなら[10]に意味が出る」ってのは間違いってことね。
240: デフォルトの名無しさん (スプッッ Sd3f-2MD7) [] 2024/09/18(水) 18:30:29.69 ID:LEoKOQZWd(4/5) AAS
>>222 のバグを晒すスレはここですか?
243: デフォルトの名無しさん (ワッチョイ 9f7c-2MD7) [] 2024/09/19(木) 00:15:21.84 ID:5H+5PGV10(1) AAS
もうやめて!>>222 のライフはゼロよ!
275: はちみつ餃子◆8X2XSCHEME (ワッチョイ e332-Pvcq) [sage] 2024/09/27(金) 00:16:01.96 ID:dEIfxD4z0(1/2) AAS
>>273273(2): デフォルトの名無しさん (ワッチョイ 63e3-VZV9) [] 2024/09/26(木) 23:55:11.03 ID:jCy2QsTx0(1) AAS
>>235
これの1行目は文字列長によらず固定値にならない?
char* と char[] を区別できてないように思う
// これは (ヌル文字を含む) 4バイトのデータがスタック上に作られる
// sizeof(a1) の結果は文字列数により変わる
char a1[] = "abc";
// こう書いた場合、文字列の実体は静的な領域 (テキスト領域) に確保され、
// a2にはそのアドレスが渡される。
// sizeof(a2) はポインタのサイズであり、値は文字列長によらず固定
char* a2 = "abc";
> これの1行目は文字列長によらず固定値にならない?
その通りだよ。 固定値になってたぶん意図通りではない。
その話は >>222 がボコボコに言われてもう終わったよ。
276: デフォルトの名無しさん (ワッチョイ d27c-tavX) [] 2024/09/27(金) 00:20:08.16 ID:qUi2cfOF0(1) AAS
もう >>222 を晒すのはやめてあげて......
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.033s