このコードを試すまで、変数のメモリアドレスがどんどん大きくなると思っていました:
#include <stdio.h>
int main()
{
int IamfirstVariable = 9;
char array1[10] = {'0','1','2','3','4','5','6','7','8','9'};
char array2[10] = {'0','1','2','3','4','5','6','7','8','9'};
char IamLastVariable = '0';
printf("variable start :%p\n",&IamfirstVariable);
printf("array1 address start :%p end : %p \n",&array1[0],&array1[9]);
printf("array2 address start :%p end : %p \n",&array2[0],&array2[9]);
printf("variable end :%p\n",&IamLastVariable);
return 0;
}
出力:
variable start :0xbfb02c3c
array1 address start :0xbfb02c32 end : 0xbfb02c3b
array2 address start :0xbfb02c28 end : 0xbfb02c31
variable end :0xbfb02c27
私はこれに行き詰まっています。最後に宣言された変数が最小のアドレスを取得するようです!
誰かが私のためにこれを説明できますか?
- - - - - - - - - - - 編集 - - - - - - - - - - - - - - -------------
回答のリンクを読んで、別の質問を受けました:
スタックが下向きに光るのに、配列のアドレスがまだ上向きに光るのはなぜですか?