指针的赋值问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:28:28
#include"stdio.h"
main()
{
int a=100;
int *p;
*p=a;
printf("%d",*p);
}
显示有错误;但
main()
{
int a=100;
int *p;
p=&a;
printf("%d",*p);
}没有错误。。why?

第一个程序里面
*p=a;
之前p 没有初始化,被称为野指针,它 指向内存中一快不确定的地址 你这句话的意思是把100存到这个不确定的地址里去
这么做是相当危险的!!!!可能会崩溃

第二就没问题了
p=&a;
是让p指向变量a所在的地址

指针赋值时不需加*

*p不是个变量, 他是一个操作,还回的是个值, 怎么可以给值赋值呢?
下面的就不同了, p=&a表示把变量a的地址赋值给指针变量p, 当然不会错拉

*p也是可以赋值的,只是你的第一个程序没有初始化即没有p=&a.其实当你初始化以后*P与a是等价的。