您好,匿名用户
随意问技术百科期待您的加入

关于C++的指针数组

0 投票

在头文件定义的某结构中包含Obj *p这个属性
但是这个属性在实现中其实是malloc了一个指针数组,但是如果头文件里没有注释说明这个*p是一个指针数组,是不是不看代码就没法知道Obj *p其实是数组了?

看了一些代码头文件中明明是Obj *p,使用的时候却p[i]这样用,翻了cpp文件才发现原来是malloc数组了,
这样的代码的歧义也太大了,难道大家一直都这么用的?难道C++这个平行世界这么神奇?

用户头像 提问 2012年 12月1日 @ Riven 上等兵 (334 威望)
分享到:

1个回答

0 投票

Obj *p;
p只是一个指向Obj结构或类型的指针。
malloc向系统申请一块内存,成功的话就返回一个地址,在楼主看的代码里应该把这个地址赋给p了。
由于声明的是Obj指针类型,编译器就将这块内存里的内容解释为Obj结构或类型的一个实例(或者说变量)。
p[i]会被编译器翻译成*(p+i), 由于p是Obj类型的,这个表达式表示的就是从p 开始,第i个Obj对象。

用户头像 回复 2012年 12月1日 @ Annie 上等兵 (299 威望)
提一个问题:

相关问题

0 投票
1 回复 38 阅读
0 投票
1 回复 34 阅读
用户头像 提问 2013年 11月4日 @ Zac 列兵 (77 威望)
0 投票
1 回复 35 阅读
用户头像 提问 2013年 10月28日 @ Taric 上等兵 (184 威望)
0 投票
1 回复 53 阅读
0 投票
1 回复 45 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...