请教C语言关于地址的输出问题

第一个#include <stdio.h>

void main()

{
int a;

printf("%p",a);以及 printf("%p",&a);有什么区别?前者输出来的是CCCCCCC,后者是0012ff44,请指点
}

第二个
#include <stdio.h>

void main()

{
int a ,*b;
b=&a;

printf("%p",???);
}我想知道???应该填什么,如果填b,输出的是不是a变量的地址?如果我想输出指针变量b的地址,那应该怎么办

第三个,就是printf(“”,a,&a);,逗号后面的变量什么时候要&这个符号,什么时候不要&这个符号

第一个:
由于int a;你没有赋值,第一个printf输出的是乱码无意义,第二个printf输出的是a在内存中的地址
第二个:填b,输出的是a变量的地址,同时也是b指针变量的地址,因为语句b=&a,已经把a地址赋值给指针b
不过很明显这样有问题,因为变量a根本没有赋值
第三个:
符号&加不加的关键,就要看你想要输出什么,还要看变量a是什么,是有两者共同决定的
具体过程有点复杂
先采纳,肯定一下我的劳动成果,再来详谈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-26
第一个:
printf("%p",a)
这是输出a的值
printf("%p",&a)
这是主输出存放a值的地址
第二个:
如果填b输出的是a的地址
要输出指针变量b的地址就直接printf(“%p”,&b);
第三个:
scanf(“%d”,&a);这是赋值语句,就是将输入的数字存放在地址a中
记住有&符号,表示地址
第2个回答  2013-09-26
第一个, int a; 整型变量a未赋值,所以a的值是乱码,&a是a变量内存地址
第二个,int *b; b是一个整型指针,b=&a后, b的值就是a变量的内存地址,如果输出b的地址那么就是&b
第三,具体需要什么符号和你的需求有关,比如你想打印出a的值那么就是a,你想查看a的内存地址,那么就&a
第3个回答  2013-09-26
printf("%p",a);及printf("%p",&a);的区别是前者输出a的地址,后者输出参数的地址,参数中存放a的地址
第二个填b是a变量的地址,想输出指针变量b的地址填&b

第三个&取地址,输出变量时用,输出指针时不用
相似回答