C语言新手的问题,关于指针变量

int *a是不是取a的地址?
如果是,那与b=&a有什么区别?
这个代码:#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *a,*b;
printf("a的地址是%d\n",a) ;
printf("a的地址是%d\n",&a) ;
printf("b的地址是%d\n",b) ;
printf("b的地址是%d\n",&b) ;
system("PAUSE");
return 0;
}
为什么结果都不一样呢?
望高手解答,谢谢了!!!

不是

int *a 是定义一个指针

a 指向 *a

*a 是内存中的内容. a 则是指针,指向内存地址.

b=&a是把 a 的内存地址返回成指针并赋给b. 这里 a 是一个变量(当然也可以是指针变量),不是指针. 而b 是a 的指针.

printf("a的地址是%d\n",a) ;
返回A的指针.这里是一个内存地址

printf("a的地址是%d\n",&a) ;
返回A的指针的指针

printf("b的地址是%d\n",b) ;
返回B的指针

printf("b的地址是%d\n",&b) ;
返回B的指针的指针
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-11-07
int *a并不是取a的地址,而是定义a是一个整型指针变量

b=&a是将a的地址赋予b

printf("a的地址是%d\n",a) ; //输出a中保存的地址,由于没有对a赋值,所以a的值也是未知的
printf("a的地址是%d\n",&a) ;//输出a的地址,与a中保存的地址不是一回事
printf("b的地址是%d\n",b) ;//输出b中保存的地址。
printf("b的地址是%d\n",&b) ; //输出b的地址本回答被提问者采纳
第2个回答  2007-11-07
int *a 表示定义一个指针变量a,a存放一个其他变量的地址值,同时
内存给a本身分配一个地址,也就是说a存放一个别人的地址,同时自己也有一个地址

printf("a的地址是%d\n",a) ; //打印a存放的别人的地址
printf("a的地址是%d\n",&a) ; //打印a自己的地址
printf("b的地址是%d\n",b) ; //打印b存放的别人的地址
printf("b的地址是%d\n",&b) ; //打印b自己的地址
第3个回答  2007-11-07
int *a,*b; // 声明指针变量a 和 b
printf("a的地址是%d\n",a) ; // 输出指针a指向的变量的值,由于a没有初始化,所以c会报错!

printf("a的地址是%d\n",&a) ; // 输出指针a的地址

printf("b的地址是%d\n",b) ; // 同上
printf("b的地址是%d\n",&b) ; // 同上
system("PAUSE");

return 0;

正确写法:
int *a;
int b;
a=&b; // 指针a指向整型变量b
相似回答
大家正在搜