指针初始化

是不是指针初始化第一种方法是int*p;p=&i;第二种方法是int*p=&i;均需要加取地址符,如果是int*p;p=i;就是野指针?还有,是不是只有int*p=NUL... 是不是指针初始化
第一种方法是int* p;p=&i;
第二种方法是int* p=&i;均需要加取地址符,如果是 int* p;p=i;就是野指针?
还有,是不是只有int*p=NULL时,不用加&?
展开
 我来答
burkwen
2013-06-04 · TA获得超过2522个赞
知道大有可为答主
回答量:1104
采纳率:100%
帮助的人:648万
展开全部
声明了一个指针变量 int *p后,p的址址即告确定,但p的值是随机值,会指到哪里去谁也不知道,所以叫“野指针”。只有对p人为进行赋值后,p的值才可控,特别的,对p的第一次人为赋值,称为初始化。所以你提到的第一、二种方法都是初始化。

关于赋给p的应该是什么值,不要太着相了,p就是个4字节变量而己,理论上4字节长的数值都可以赋,当然实际上出于安全考虑,不会这么乱来。举例来说:
(1)&i:就是i的地址。其实也是一个数值,只是省了你自己查找i地址的麻烦。
(2)i:如是i是一个整型变量,并且其数值作为地址是有意义的,就可以
(3)NULL:就是0。0作为地址可以吗?当然可以。你写成int *p=0也一样。
综上:只声明、没赋值过的指针都是野指针,初始化就是第一次赋值。能赋给指针的,只要是可以解释为地址的数值都可以。
miniappU21aVS0g36jlk
2013-06-04 · 超过12用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:31.8万
展开全部
指针的初始化一:
int i;
int *p;
p=&i;
二:如果在数组中
int a[10];
int *p;
p=&a[0];或者p=a;
也就是说在数组中给指针变量初始化可以没有&
三:int *p=NULL 说明指针指向空,所以不用加&
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
l543934480h
2013-06-04
知道答主
回答量:2
采纳率:0%
帮助的人:2915
展开全部
同志,搞清楚这个问题的关键是分清楚类型一致。
p为指针故只能将一个变量的地址赋给它 , 初始化的意思就是第一次出现该指针的赋值动作。
后续对它的操作时赋值而不能说是初始化。 至于NULL该变量是一个被系统定义为空指针的标记。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式