【发布时间】:2012-09-08 10:15:09
【问题描述】:
为什么返回的指针地址的十六进制值总是按降序排列?
例如这里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 我的意思是一样的,只是没有使用正确的词。:)
-
@AshwiniChaudhary - 你需要参加更好的测验。通常会收到有关地理、历史和我的仇恨电影和电视的问题。 (我通常在电影院里睡着了!)
标签: c pointers pointer-address