char& *是什么意思?

时间:2013-07-05 07:52:24

标签: c++

这来自Autodesk公司的AutoCAD 2013(ObjectARX SDK)的官方文档:

  

AutoCAD 2013的ObjectARX:自述文件 - >提示和技巧 - >释放   * 返回非常量指针的字符串: *

     

调用返回非常量字符串指针的方法时(for   例如,AcDbSymbolTable::getName(char&* pName)),你应该释放   返回的字符串占用的内存。例如:

// The getName() call should be followed by a call to
acutDelString(pLtName);pLtTableRcd->getName(pLtName);
// ... other code
acutDelString(pLtName);
     

请注意,某些ObjectARX示例文件缺少对free的调用   内存,所以他们会出现内存泄漏。使用样品时   在你自己的代码中,确保正确释放内存。

下一个参数类型意味着什么:

AcDbSymbolTable::getName(char&* pName))

是指向char&的指针吗?凭什么?什么时候使用这样的结构?

谢谢。

2 个答案:

答案 0 :(得分:6)

根据clockwise/spiral rule pName是指向char的引用的指针。

我想说有一个指向引用的指针没有多大意义。另一种方式(引用指针)可能很有用,因为您可以更改函数内部的指针。

答案 1 :(得分:3)

这是文档中的拼写错误;他们的意思是AcDbSymbolTable::getName(char*& pName))

如果您这样阅读,则段落的其余部分非常有意义:getName是一个函数,它通过声明为字符串引用的out参数来检索字符串(char *)。它甚至继续说必须使用acutDelString释放返回的“字符串”。

如果您查看头文件中的实际声明,您很可能会找到声明为char*&的参数。