在头文件定义的某结构中包含Obj *p这个属性 但是这个属性在实现中其实是malloc了一个指针数组,但是如果头文件里没有注释说明这个*p是一个指针数组,是不是不看代码就没法知道Obj *p其实是数组了?
看了一些代码头文件中明明是Obj *p,使用的时候却p[i]这样用,翻了cpp文件才发现原来是malloc数组了, 这样的代码的歧义也太大了,难道大家一直都这么用的?难道C++这个平行世界这么神奇?
Obj *p; p只是一个指向Obj结构或类型的指针。 malloc向系统申请一块内存,成功的话就返回一个地址,在楼主看的代码里应该把这个地址赋给p了。 由于声明的是Obj指针类型,编译器就将这块内存里的内容解释为Obj结构或类型的一个实例(或者说变量)。 p[i]会被编译器翻译成*(p+i), 由于p是Obj类型的,这个表达式表示的就是从p 开始,第i个Obj对象。
欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。 温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。