【发布时间】:2023-03-22 20:18:01
【问题描述】:
我正在尝试使用以下表达式将内存重新分配给我的表。但我总是收到以下错误。请告诉我。
typedef char *OFAttribs[6];
OFAttribs *tmp = realloc(pTable, sizeof(*tmp) * (nTableLen+1));
Error: invalid conversion from âvoid*â to âchar* (*)[6]â
【问题讨论】:
-
你定义了一个指向数组的指针。数组本质上也是指针。所以你的类型是一个指向指针的指针。然后你声明了一个指向该类型的指针。你确定这就是你想要的吗?
-
@AE:数组是不是指针,而这里的
OFAttribs类型绝对是不是指向指针的指针。 -
@caf 如果您尝试将
int a[2]; int b = a;编译为 C++,您将从 gccinvalid conversion from 'int*' to 'int'收到以下错误。所以在这种情况下,'a' 确实是一个指向 int 的指针。 -
@AE:在不是一元
&或sizeof的主题的表达式中,数组计算为指向其第一个元素的指针,但那不是它是的。如果您将其更改为int b = &a;,则可以看到这一点 - 错误将显示来自int (*)[2]的无效转换,notint **。这说明a的实际类型是int [2]。
标签: c string error-handling realloc