Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。(char*)b);}のように書けるように思います。*で異なるからこのような使い方をした場合動作未定義(?)先頭のアドレスが同じであって、メモリ配置上実質的に同じであるから問題無し。;のような2次元配列をラップしている構造体fがある。data[7][7];があって、何らかの作業を行ったあとfに格納したい。sizeof(data));であるので問題無い。sizeof(f));のように動作する。sizeof(data)でありdataの範囲外の読み出しをするから動作未定義である。sizeof(data)であったとしても問題無い。(私の予想としてはおそらくパディングもコピーされる)最後のメンバーにはパディングが存在しない(?)。sizeof(data)であって、メモリイメージ上同じであるから問題無い。(2-3)一般にcharのメモリ上の配置にはアライメント制約が存在しない。foo*)dataすること)は、アライメント制約ルール違反であり動作未定義である。ついては、「同じ」が答えです。beginning.とありました。訳すと構造体のビットフィールド以外のメンバーと、ビットフィールドがまとめられたユニットは、宣言された順番に大きくなるようなアドレスを持つ。構造体へのポインタは、ちゃんと変換すれば、最初のメンバーを指す。構造体はパディングされることがあるが、先頭にはない。いうことなので、メンバーは宣言された順番に並んでいるし、最初のメンバーは構造体の先頭です。bits.とあります。パディングの値は不定で、したがって代入の時にパディングをコピーする必要はない、と言っています。逆に言えば、コピーしても構わないということでしょう。union.つまり、構造体の最後にもパディングが来てもよいと言っています。まとめると、構造体の最後にパディングが来てもよいし、そのパディングを代入の際にコピーしてもよいということになります。見ると、キャストしているので構造体の代入ですから、厳密にいえば未定義だと思います。;では、アラインメントの必要なメンバーがないので、現実的には、最後にパディングを入れることは、まずないと思います。個の銅バッジ先頭にはパディングがないと思っていましたが規格によってはっきりして良かったです。詰まる所(1)については問題無しということですね。|1まとめのようなもの(なのでコミュニティwikiで)(1)については、Hidekiさんの回答の通りであり問題無い。sizeof(data));は同じである。49この結果からはこの場合パディングは存在しない。構造体の代入においてメンバー相互に代入が行われるのみではなくパディングもコピーされる。メンバー個別に代入が行われるのではなく全体がmemcpyのようにコピーされることが推測される。(実装依存?)(2-2-3)(2-2-1)と(2-2-2)の結果から最後のメンバーの後ろには(構造体自体における)パディングはないと予想される。メンバーのタイプがcharの配列の場合でパディングが存在しない場合は問題無し。これが予想される結論(2-3)86系のマシンではアライメントバイオレーション例外を起こさないので検証コードが書けないw。*(int*)&a[1];のようなコードは例外を起こすに違いない。d;};のような構造体でラップした時にintで読み出されるのか(OUT!)memcpyのようにバイトで読み出されるのかということ。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。会を開催します🎉コメントで回答する理由を教えてくださいサイトの未翻訳箇所を見つけて、もくもく会で直しましょう関連する質問13ポインター型はどうしてアドレスだけで情報が扱えるのですか0構造体の中のポインタ変数をもつ構造体から各々のメンバに値を代入したい3%sで配列の中身を表示さる時に、配列の先頭要素のアドレスを渡せば'\0'までの文字が表示される認識ですが、そうならない原因にがわからない。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。