黑马程序员技术交流社区

标题: 关于指针 [打印本页]

作者: Eil.tea    时间: 2015-7-29 01:59
标题: 关于指针
int *p=(int *)malloc(100);
*(p+1)=100;
这样书写是没问题的
int *p;
*(p+1)=100;
依然没有问题,那申请内存空间的意义是什么?是为了保证申请的地址是非占用的吗?如果不申请的话,那么*(p+1)有可能会跟已有变量的地址冲突,导致错误。不知道这样理解对不对。

作者:   张恒宇    时间: 2015-7-29 23:22
指针的定义是用来指向某个地址的存储空间的。。。和你赋值与否没有什么关系!而且指针+1不代表地址会加1。。。。申请内存空间就是用来存储数据的。。。
作者: Eil.tea    时间: 2015-7-29 23:30
  张恒宇 发表于 2015-7-29 23:22
指针的定义是用来指向某个地址的存储空间的。。。和你赋值与否没有什么关系!而且指针+1不代表地址会加1。 ...

感谢你的回答,可是我问的问题是,是否申请内存空间,对于指针的使用没有关系。
作者:   张恒宇    时间: 2015-7-30 00:28
Eil.tea 发表于 2015-7-29 23:30
感谢你的回答,可是我问的问题是,是否申请内存空间,对于指针的使用没有关系。 ...

定义一个指针只是定义了一个存放地址的指针变量,他只能存放地址,定义一个指针并没有为他所指向的数据分配空间
作者: 刘唐飞    时间: 2015-7-30 01:21
简单一句话来说:是为了合理使用内存

作者: Eil.tea    时间: 2015-7-30 01:31
刘唐飞 发表于 2015-7-30 01:21
简单一句话来说:是为了合理使用内存

我接受这个解释,谢谢。
作者: Anne_lov    时间: 2015-7-30 17:07
我觉得你的理解和我的相同呢。如果用malloc可以保证申请的内存空间是可以正常访问的。而你说的第二种属于非法访问吧,因为你也不知道里面存的东西有没有用。
作者: 白方镜世    时间: 2015-7-30 18:33
也可以这么理解吧,只要你申请了一段内存,只要你不释放这段内存,那么这段内存想怎么用就怎么用,因为这一段内存属于堆空间,系统是不会搭理的,管理完全靠程序员,而如果没有申请,那么指针也就只是指向一个地址而已,至于改了指向的地址的内容,只能说,后果自负。。。




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