C言語なら俺に聞け 163 (987レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
189(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-vU+L) [sage] 2024/09/16(月) 08:22:23.81 ID:JwEVxA0h0(1/6) AAS
>>185配列はポインタに型変換される。 だから型は合うんだよ。
変更可能な左辺値でなければならないという制約に違反してる。
190(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-vU+L) [sage] 2024/09/16(月) 08:28:07.90 ID:JwEVxA0h0(2/6) AAS
>>182-183
静的記憶域期間ってのは静的+記憶域期間なんだよ。 静的記憶域+期間じゃないんだよ。
まあ静的記憶域期間を持つオブジェクトが配置されている場所を静的記憶域と呼んでもカジュアルな場面ではそんなに不自然ではないとは思うけど。
実装上は専用のセクションに配置するのが普通だし。
195(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-vU+L) [sage] 2024/09/16(月) 13:26:14.08 ID:JwEVxA0h0(3/6) AAS
>>194
6.3.2.1 より
> 左辺値がsizeof演算子のオペランド,単項&演算子のオペランド,又は文字配列を初期化するのに使われる文字列リテラルである場合を除いて,
> 型“〜型の配列”をもつ式は,型“〜型へのポインタ”の式に型変換する。
式として出てくる配列は一部の例外を除けば問答無用で変換されるので ++ のオペランドに配列が出てくるときも変換後のポインタ (rvalue) に対する演算 (実際には出来ないけど) として解釈されるということでいいと思う。
197(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-vU+L) [sage] 2024/09/16(月) 16:28:24.01 ID:JwEVxA0h0(4/6) AAS
>>196C には配列の要素を指すポインタとは別に配列を指すポインタというものもある。
こんなことが出来る。
int foo[10];
int (*bar)[10] = &foo;
このときの bar の型は int(*)[10] ということになるわけだが……。
型情報として長さが含まれるのはかえって邪魔だ。
大抵の配列を受け取る関数 (str系やmem系など) は配列の大きさが固定ではないから。
配列の先頭要素で配列を代表させる (それが簡単な記法にする) ほうが都合がよかったんじゃないかと思う。
配列全体をひとつの値として扱いたい場合のほうが少ないだろうという判断もそれなりに合理的じゃないかな。
いまどきの言語 (Go とか Rust とか) は範囲を表すスライスという概念を導入して解決してるけど、
C の登場時期だと 2 ワードのオブジェクトを基本型にするのってなんかヤじゃない? と思ったとしても仕方ない。
201(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-6w0d) [sage] 2024/09/16(月) 18:10:03.54 ID:JwEVxA0h0(5/6) AAS
>>199こっちは根拠になる規格の文面を提示してるんだから違うというなら違うと思う根拠を提示して。
207(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-vU+L) [sage] 2024/09/16(月) 22:43:01.97 ID:JwEVxA0h0(6/6) AAS
>>203余談だけど配列だけじゃなくて関数型も関数ポインタ型に調整されるよ。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.572s*