貌似我记得,好像不可以直接给指针变量赋值吧,如果记错了,那就是*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; }