問題タブ [compound-literals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 構造体と文字列リテラル? 読み取り専用 vs 読み書き?
C99 標準では、複合リテラル (構造体) への書き込みが許可されていますか? リテラル文字列への書き込みを提供していないようです。C Programming: A Modern Approach, 2nd Edition on Page 406 に記載されているので、これについて質問します。
Q. 複合リテラルへのポインターを許可すると、リテラルを変更できるように見えます。そうですか?
A.はい。複合リテラルは、変更可能な左辺値です。
しかし、それがどのように機能するのか、また、変更できない文字列リテラルでどのように機能するのかはよくわかりません。
segfault の原因のリストで、書き込みbaz->aによって segfault が発生することを確認できます。しかし、への書き込みはしbaz->gません。それらの1つがセグメンテーション違反を引き起こし、他の1つが原因ではないのはなぜですか? 構造体リテラルは文字列リテラルとどう違うのですか? 構造体リテラルもメモリの読み取り専用セクションに配置されず、これらの両方に対して動作が定義されているか未定義であるのはなぜですか(標準の質問)?