我输入main()
{
int n=10;
printf(“%p”,&n);
}
输出了0028FF44
但是输如n=11; n=12;n=任意数,它都输出0028FF44,这是bug吗?
%p打印的是变量地址,你后面只改变了值,没有改变地址,所以打印的都是同一个地址。
p是用在指针变量的,输出的是地址,你前边定义的n是整型不是指针
p是用在指针变量的,输出的是地址,你前边定义的n是整型不是指针
你打印的是指针地址,打印数值得这么写:
printf("%d", n);
scanf才要取地址,printf不需要。
为什么scanf需要取地址?因为你定义了一个变量,要把输入的内容放进去,就要告诉scanf它的地址是多少。
为什么printf不需要,因为printf不需要改变变量的值,只要把参数的字面值传进去,就能输出,printf不关心这个变量存在在哪里。
%p是取址,这结果与n的数值无关
printf()函数中参数控制符%p,输出的是变量地址,这里你只改变了变量值,变量内存程序运行时系统分配是相同的地址0x0028FF44,所以打印的都是同一个地址~
我输入main()
{
int n=10;
printf(“%p”,&n);
}
这个表示要输出变量N的地址。就好比不管你在哪里。你家的地址是不会改变的