黑马程序员技术交流社区

标题: 新人对指针定义的的疑惑 [打印本页]

作者: wwf707542865    时间: 2015-9-27 21:39
标题: 新人对指针定义的的疑惑
刚看指针定义初始化的视频,被整蒙了,需要大家的帮忙,问题入下:
老师视屏里面是这样的定义指针和初始化的
int a=4,b=4;
int *p=&a,*p1=&b;
然后老师给出了一个练习题,如下
int a,b;
int *p;
问*p=&a;是否正确?我觉得应该是对的,指针不是就是指向地址的么,用地址赋值初始化难道不对?但是老是说是错误的,就有些蒙了,请大家稍加解释一下,谢谢!
作者: wwf707542865    时间: 2015-9-27 21:41
谁来给我解释一下啊{:2_34:}
作者: chenxiuyu    时间: 2015-9-27 21:51
上边和下边的没关联吧...没关联的话.你在对*p赋值的时候.直接写p=&a,你试试,这样应该就对了.
作者: 请叫我焦卷卷    时间: 2015-9-28 07:43
wwf707542865 发表于 2015-9-27 21:39
刚看指针定义初始化的视频,被整蒙了,需要大家的帮忙,问题入下:
老师视屏里面是这样的定义指针和初始化 ...

对指针变量定义的同时进行初始化写int *p=&a是对的,如果先定义指针变量,int a;int *p;再初始化它,*p=&a;这句话就不能带*,因为此时*p代表的是p这个指针变量所指向的空间的内容,而不是所指向空间的地址。
作者: 杰杰    时间: 2015-9-28 07:57
楼上正解。
作者: 请叫我焦卷卷    时间: 2015-9-28 08:06

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

谢谢,自己太小白了,现在明白了
作者: wwf707542865    时间: 2015-10-2 17:31
请叫我焦卷卷 发表于 2015-9-28 07:43
对指针变量定义的同时进行初始化写int *p=&a是对的,如果先定义指针变量,int a;int *p;再初始化它,*p=& ...

谢谢,自己小白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2