2017-05-28 9 views
-4
#include<stdio.h> 
int main(){ 
int x=5; 
char A_one[8], A_two[8]; 
} 

私はxがA_toneとA_one(減少)の上位アドレスにあると思います。誰でも私に以下の変数の注文を説明できますか?

+1

あなたはそれを試してみてはどうでしょうか? –

+3

いいえ、ちょうどいいえ。これらのアドレスがプログラムに取り込まれていなければ、a)完全に省略されるか、b)代わりにレジスタに格納される、c)メモリ内のそのような変数のレイアウトは、実装によって定義される。 –

+0

私は先生に挑戦しましたが、私はxのアドレスが低くなっています。そして私はxのアドレスが最高であるという点で本を読んでいます。 @ErikW –

答えて

2

これは定義されていないため、一般的には答えられません。

printf("x is at %p, A_two at %p and A_one at %p\n", (void *) &x, 
     (void *) &A_two, (void *) &A_one); 

注意C標準は、例えば、これらの変数はスタックに置かれていることを必要としないこと:あなたが簡単にアドレスをプリントアウトすることによってそれを試すことができ、特定のケースでは

+0

しかし、私は上位アドレスから下位アドレスへのスタックの成長を読んでいるので、xは最初に上位アドレスに行くべきです。 @unwind –

+0

@pushpamkこれは特定のコンパイラとOSには当てはまるかもしれませんが、そのような詳細は指定していません。 Cはそれを指定していませんが、それは実装次第です。 – unwind

+0

私はそれを持っています、ありがとうございます:) @unwind –

関連する問題