爲什麼返回的指針地址的十六進制值總是按遞減順序? 例如這裏int a
int d
之前宣佈,所以它的地址永遠是比d
更大,同爲&b
,&e
和&c
,&f
,我想知道,這是一個固定的行爲,或者是這個編譯器相關的? 我使用gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-1
)連續聲明變量的內存地址順序是否始終下降?
#include<stdio.h>
int main(void){
int a=1;
int d=1;
char b='a' ;
char e='a';
float c=1.0;
float f=1.0;
printf("a=%p\nd=%p\nb=%p\ne=%p\nc=%p\nf=%p\n",&a,&d,&b,&e,&c,&f);
if (&a>&d)
printf("&a>&d\n");
else
{printf("&a<&d");
}
if (&a>&d && &b>&e && &c>&f)
printf("addresses are in descending order");
else{
printf("false");
}
return 0;
}
輸出:
a=0xbfc6bd98 //a>d
d=0xbfc6bd94
b=0xbfc6bd9f //b>e
e=0xbfc6bd9e
c=0xbfc6bd90 //c>f
f=0xbfc6bd8c
&a>&d
addresses are in descending order
PS:我是新的C
重要嗎? –
地址未分配給變量,但值存儲在內存地址中。 – moooeeeep
@moooeeeep我的意思是一樣的,只是沒有使用正確的話。:) –