代码:
main()
{
int a=2;
int *p;
*p=&a;
printf("%d",*p);
}
将其中printf("%d",*p)换为printf("%d,%d",*p,&a);为什么*p显示的值不一样?
參考答案:main()
{
int a=2;
int *p;
*p=&a;
printf("%d",*p);
}
将地址值赋值给int型,本来是可以输出的,而且*p和&a应该是同一个值(我想ls的都只拘泥于p=&a了),不过你这里错在没有为指针p分配空间,所以*p = &a赋值不成立,*p应该是随机的。
定义p的这一句应该改为
int *p = (int*)malloc(sizeof(int));
还有最后用完别忘了
free(p);
我试过了,*p 和&a是一样的。
P.S.你要把地址值赋值给整型的话,最好用长整型,int太短了。