怎样才能知道指针变量在内存中的地址编号?
如果先定义一个指针变量*m,那么单程序运行时,m将会存储一个内存的地址。但是同时它自己也将要占用一定的内存。那么怎样取得m在内存中的地址呢?我用的是DEV-C++。当我用...
如果先定义一个指针变量*m,那么单程序运行时,m将会存储一个内存的地址。但是同时它自己也将要占用一定的内存。那么怎样取得m在内存中的地址呢?我用的是DEV-C++。当我用取地址符&,想要取得m的地址时,编译会出错,为什么?但是如果我用
c=&*m,d=&*n时虽然不会出错,但是运行后的结果,*m,*n的地址值怎么和a,b的地址值是一样的呢?还有最后输出的e,f的值为什么不是0?
例程:#include<stdio.h>
int main()
{
int a=123,b=1234567;
int *m,*n,*c,*d,*e,*f;
m=&a;
n=&b;
c=&*m;
d=&*n;
printf("*m=%d\t,*n=%d\n",*m,*n);
printf("m=%d\t,n=%d\n",m,n);
printf("c=%d\t,d=%d\n",c,d);
printf("%d\t,%d\n",e,f);
return 0;
}
运行结果:
*m=123 ,*n=1234567
m=2293620 ,n=2293616
c=2293620 ,d=2293616
8 ,4072560 展开
c=&*m,d=&*n时虽然不会出错,但是运行后的结果,*m,*n的地址值怎么和a,b的地址值是一样的呢?还有最后输出的e,f的值为什么不是0?
例程:#include<stdio.h>
int main()
{
int a=123,b=1234567;
int *m,*n,*c,*d,*e,*f;
m=&a;
n=&b;
c=&*m;
d=&*n;
printf("*m=%d\t,*n=%d\n",*m,*n);
printf("m=%d\t,n=%d\n",m,n);
printf("c=%d\t,d=%d\n",c,d);
printf("%d\t,%d\n",e,f);
return 0;
}
运行结果:
*m=123 ,*n=1234567
m=2293620 ,n=2293616
c=2293620 ,d=2293616
8 ,4072560 展开
展开全部
int *m,*n,*c,*d,*e,*f;
m=&a;//将a的地址值赋给指针变量m。
n=&b;//将b的地址值赋给指针变量m。
c=&*m;//*m和*n是分别指向存储单元a和b,所以“c=&*m”等价于“c=&a”
d=&*n; //等价于d=&b
所以 m和c 的值相同,n和d的值相同,就不奇怪了。
至于e、f,你没有指向,系统默认指向NULL,也就是空值0
m=&a;//将a的地址值赋给指针变量m。
n=&b;//将b的地址值赋给指针变量m。
c=&*m;//*m和*n是分别指向存储单元a和b,所以“c=&*m”等价于“c=&a”
d=&*n; //等价于d=&b
所以 m和c 的值相同,n和d的值相同,就不奇怪了。
至于e、f,你没有指向,系统默认指向NULL,也就是空值0
追问
那怎样取得指针变量的内存地址?其二,我这里运行的结果e,f并不等于0而是等于8,4072560。为什么?
追答
求指针变量的内存地址:以下是求指针变量m的内存地址。
int **s, *m,*n,*c,*d,*e,*f;
s=&m;
printf("指针m的地址:%d\n",s);
另外,e、f这两个指针变量,没有初始化,即没有赋值,所以它们的值是不确定的。通俗一点,e、f,乱指一通,毫无目标。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询