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 ,哪不是覆盖原先的地址,把系统中的东西给删除了,可能导致死机,不是要定义指针的同时要初始化吗!不管是普通变量还是指针变量最好是在定义的时候初始化,是不是这样的?
展开
4个回答
展开全部
跟你讲讲指针吧,指针的值就是--某变量的地址。一般对变量求地址用取地址符 &,对指针进行定义时候根据指针指向的变量的类型来决定指针的类型,比如说指针指向整形数据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 的地址,但结合你的语境的话应该是错误的。希望能够对你有所帮助。
展开全部
前三个都是对的,p中存放时的是i的地址,前两个是在定义时直接初始化,第三个是定义之后再赋值,最后一个是不对的,因为p是指针,它指向哪里都不知道呢,怎么能给其中的内容赋值呢?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*p是指针,存放的是i的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询