貌似我记得,好像不可以直接给指针变量赋值吧,如果记错了,那就是*p不是一个具体的地址,搞不到他的地址,也就找不到值输出咯
上面的程序就相当于
int *p;
然后将地址0x0000000a存放在指针p内,而*p代表的在该地址下存放的是什么内容,显然上面程序是不能提供的,所以会报错。
而打印p,因为前面的%d的缘故,会将地址打印成数字。16进制中a代表10.
程序代码:#include <stdio.h>
int main(int argc, char *argv[])
{
int *p ;
*p = 10;
printf("%d,%x\n",*p,p);
return 0;
}
程序代码:#include <stdio.h>
int main(int argc, char *argv[])
{
int *p = 0x7efde000;
//*p = 10;
printf("%d,%x\n",*p,p);
return 0;
}