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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Eil.tea 中级黑马   /  2015-7-29 01:59  /  1019 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int *p=(int *)malloc(100);
*(p+1)=100;
这样书写是没问题的
int *p;
*(p+1)=100;
依然没有问题,那申请内存空间的意义是什么?是为了保证申请的地址是非占用的吗?如果不申请的话,那么*(p+1)有可能会跟已有变量的地址冲突,导致错误。不知道这样理解对不对。

7 个回复

倒序浏览
指针的定义是用来指向某个地址的存储空间的。。。和你赋值与否没有什么关系!而且指针+1不代表地址会加1。。。。申请内存空间就是用来存储数据的。。。
回复 使用道具 举报
  张恒宇 发表于 2015-7-29 23:22
指针的定义是用来指向某个地址的存储空间的。。。和你赋值与否没有什么关系!而且指针+1不代表地址会加1。 ...

感谢你的回答,可是我问的问题是,是否申请内存空间,对于指针的使用没有关系。
回复 使用道具 举报
Eil.tea 发表于 2015-7-29 23:30
感谢你的回答,可是我问的问题是,是否申请内存空间,对于指针的使用没有关系。 ...

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

我接受这个解释,谢谢。
回复 使用道具 举报
我觉得你的理解和我的相同呢。如果用malloc可以保证申请的内存空间是可以正常访问的。而你说的第二种属于非法访问吧,因为你也不知道里面存的东西有没有用。
回复 使用道具 举报
也可以这么理解吧,只要你申请了一段内存,只要你不释放这段内存,那么这段内存想怎么用就怎么用,因为这一段内存属于堆空间,系统是不会搭理的,管理完全靠程序员,而如果没有申请,那么指针也就只是指向一个地址而已,至于改了指向的地址的内容,只能说,后果自负。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马