int i,*p=&i; 和int i=5,*p=&i ;以及int i=5,*p;p=&i;还有 int *p=5;这些之间有什么区别,哪些是对的

inti=5,*p;p=&i;这样给指针P赋值对吗?不是要inti=5,*p=NULL;p=&i;这样做才对吗?因为你定义了int*p之后,系统给你开辟一空间,此时指针p... int i =5,*p;p=&i; 这样给指针P赋值对吗?不是要int i=5,*p=NULL; p=&i ; 这样做才对吗?因为你定义了int *p之后,系统给你开辟一空间,此时指针p可能指向系统中的东西,你这之后再把&i 赋值给p ,哪不是覆盖原先的地址,把系统中的东西给删除了,可能导致死机,不是要定义指针的同时要初始化吗!不管是普通变量还是指针变量最好是在定义的时候初始化,是不是这样的? 展开
 我来答
laohuang81
2011-01-06 · TA获得超过298个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:83.7万
展开全部
跟你讲讲指针吧,指针的值就是--某变量的地址。一般对变量求地址用取地址符 &,对指针进行定义时候根据指针指向的变量的类型来决定指针的类型,比如说指针指向整形数据5,则定义指针的类型时候也用int。指针的申明一般有两种,一种是直接申明,如 int*p=&a,* 为取指针的值,也就是所指的变量的地址,右边的话取地址后就是变量a的地址,所以左右两边能够用=。还有一种就是先申明指针,然后再给指针赋值,如 int*p;p=&a。以上这两种实现的功能是一样的,即定义一个指针指向整形数据a。 根据这些过程,那你的提问也就非常容易了,int i,*p=&i 是可以的,int i=5,*p=&i 也是可以的,int i=5,*p;p=&i 也对。最后一个的话严格的话来讲是正确的,即定义一个指向内存中地址为5 的地址,但结合你的语境的话应该是错误的。希望能够对你有所帮助。
北方七宿
2011-01-06 · TA获得超过396个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:267万
展开全部
前三个都是对的,p中存放时的是i的地址,前两个是在定义时直接初始化,第三个是定义之后再赋值,最后一个是不对的,因为p是指针,它指向哪里都不知道呢,怎么能给其中的内容赋值呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f5e49da
2011-01-06 · TA获得超过162个赞
知道答主
回答量:91
采纳率:50%
帮助的人:70.3万
展开全部
*p是指针,存放的是i的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
395830932
2011-01-09
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
554
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式