A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wwf707542865 中级黑马   /  2015-9-27 21:39  /  1263 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚看指针定义初始化的视频,被整蒙了,需要大家的帮忙,问题入下:
老师视屏里面是这样的定义指针和初始化的
int a=4,b=4;
int *p=&a,*p1=&b;
然后老师给出了一个练习题,如下
int a,b;
int *p;
问*p=&a;是否正确?我觉得应该是对的,指针不是就是指向地址的么,用地址赋值初始化难道不对?但是老是说是错误的,就有些蒙了,请大家稍加解释一下,谢谢!

12 个回复

倒序浏览
谁来给我解释一下啊{:2_34:}
回复 使用道具 举报
上边和下边的没关联吧...没关联的话.你在对*p赋值的时候.直接写p=&a,你试试,这样应该就对了.
回复 使用道具 举报
请叫我焦卷卷 来自手机 中级黑马 2015-9-28 07:43:29
板凳
wwf707542865 发表于 2015-9-27 21:39
刚看指针定义初始化的视频,被整蒙了,需要大家的帮忙,问题入下:
老师视屏里面是这样的定义指针和初始化 ...

对指针变量定义的同时进行初始化写int *p=&a是对的,如果先定义指针变量,int a;int *p;再初始化它,*p=&a;这句话就不能带*,因为此时*p代表的是p这个指针变量所指向的空间的内容,而不是所指向空间的地址。
回复 使用道具 举报
楼上正解。
回复 使用道具 举报
请叫我焦卷卷 来自手机 中级黑马 2015-9-28 08:06:47
地板

对指针变量定义的同时进行初始化写int *p=&a是对的,如果先定义指针变量,int a;int *p;再初始化它,*p=&a;这句话就不能带*,因为此时*p代表的是p这个指针变量所指向的空间的内容,而不是所指向空间的地址。
回复 使用道具 举报
指针只定义没有初始化,是野指针
回复 使用道具 举报
分开定义的话 如果再需要指针指向地址,就要把*去掉.
回复 使用道具 举报
如果出现*的地方有类型修饰符,此时*仅仅起到标示作用,告诉编译器,这是一个指针变量。
如果出现*的地方没有类型修饰符,此时*代表取值操作符,它会把指针指向的区域中的内容取出来或者赋值。
回复 使用道具 举报
int *p = &a;定义一个int型指针变量并将a的地址赋值给他。
int *p;*p = &a;第一句定义一个int型指针变量p。第二句中的p就是int *类型,所以*p代表的是他指向地址中的内容。
回复 使用道具 举报
赞赞赞....
回复 使用道具 举报
chenxiuyu 发表于 2015-9-27 21:51
上边和下边的没关联吧...没关联的话.你在对*p赋值的时候.直接写p=&a,你试试,这样应该就对了. ...

谢谢,自己太小白了,现在明白了
回复 使用道具 举报
请叫我焦卷卷 发表于 2015-9-28 07:43
对指针变量定义的同时进行初始化写int *p=&a是对的,如果先定义指针变量,int a;int *p;再初始化它,*p=& ...

谢谢,自己小白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马