c语言真高手请进!

来源:百度知道 编辑:UC知道 时间:2024/06/27 21:52:05
已知地址,怎么知道这个内存地址属于那个变量?怎么输出这个地址属于那个变量?(c语言)
困扰已久,望赐教
有办法的,用printf就可以,但是参数我不知道。不知道和我一起等答案,别瞎说。。。

对 已知变量名,依次算出地址,若某变量的地址等于 已知内存地址,则这个内存地址属于该变量。

变量的地址,用 & 算。例如:
int a,b;
float c;
用 &a,&b,&c 算
if (&a == add) printf("...");
if (&b == add) printf("...");
if (&c == add) printf("...");

数组地址也用 & 算。
例如:for (i=0;i<10;i++) {
if (&d[i] == add) { printf("...");};
}

已知地址一点意义都没有!!!
首先只有全局变量才有确定的地址。
就算你只有全局变量,你未必就可以确定这个地址指向的是数据还是指令,指令和数据在内存中的表示方法是一样的,就算你确定了这个地址是数据,那也是没意义的,知道了数据地址还要知道这个数据的字节数,是按字取地址还是按字节取甚至是按双字取,那么,这样一来就有好多种取法,你根本就不可能确定这个地址是属于那个变量。

希望楼主喜欢。

你先得到这个内存的绝对地址,再和&var的绝对地址比较,如是相同就是。前提是你要知道该程序中有哪些变量名。
main(){
int a,b;
char *p1=0xf000;

while(p1!=&a)
p1++;

printf("\n %p is var a %p mem.",p1,&a);

getch();
}

int a;
printf("0x%x",&a);
这个东西似乎没什么意义,没做过,不知道这个行不行。%x 是以十六进制格式输出。

你是不是想知道这块内存存放的是哪种类型的变量啊,我不太明白,你最好举个例子子上来

#define NAMEOF(x) #x
<