-3

これは、インタビューの1つで尋ねられた質問の1つです。投稿するかどうかはわかりません。しかし、答えは私を助けるでしょう。

ローカル変数がスタックに格納されることはわかっています。たとえば、次のようなコードがあるとします。

int main()
{
    struct ST1 {
        char ch1;
        short s;
        char ch2;
        long long ll;
        int i;
    }s1;
    function(s1);// pasing structure to function
// some code
}

function(struct ST1 s1) {
    // code to show the order in which the fields of the structure are stored on the run time stack
}

構造体のフィールドが実行時のスタックに格納される順序を示すコードを関数に記述するにはどうすればよいでしょうか?

4

2 に答える 2

3

構造体のフィールドが格納されている順序を示すコードを関数に記述するにはどうすればよいでしょうか?

その必要はありません。C 言語標準では、次の順序が保証されています。

[C99 §6.7.2.1]構造体オブジェクト内で、非ビット フィールド メンバーとビット フィールドが存在するユニットには、宣言された順序で増加するアドレスがあります。

于 2013-10-04T12:03:47.800 に答える