指向常量指针的指针

pointer to pointer to constant

本文关键字:指针 常量      更新时间:2023-10-16

我有一个函数const void* getData(),它返回一个指向常量数据const void*的指针我需要为这个函数编写一个包装器,该包装器获得一个(输出)参数,该参数应该返回上述指针。

void wrapGetData([type] ppData) {
*ppData = getData();
}

[type]应该是多少?void **不适合,因为getData()返回指向const

的指针。

如果getData()返回void const *,那么[type]应该是void const * &:

void wrapGetData(void const * & ppData) 
{
    ppData = getData();
}

注意&是必需的,因为ppData是输出参数。

你可以这样调用这个函数:

void const * output;
wrapGetData(output); 

这与另一种解决方案有点不同,在这种解决方案中,您必须将函数调用为:

wrapGetData(&output); //if [type] = const void **

注意const void*void const*是一样的。所以不要混淆语法。


这与另一种解决方案有点不同,在这种解决方案中,您必须将函数调用为:

wrapGetData(&output); //if [type] = const void **

希望对你有帮助。

const void**:

const void *getData() {
  return nullptr;
}
void wrapGetData(const void** ppData) {
  *ppData = getData();
}
int main() {
  const void *p;
  wrapGetData(&p);
}