【发布时间】:2017-06-23 12:12:22
【问题描述】:
我有以下二维数组 N*2(我不能修改它的声明):
bool* myArray[2];
int N;
我想用 calloc 分配它但没有成功:
myArray = calloc(N, 2*sizeof(bool));
for (int i=0; i!=N; i++)
{
myArray[i] = calloc(2, sizeof(bool));
}
编译器提升了我(在第一个 calloc 上):
error: incompatible types in assignment of 'void*' to 'bool* [2]'
我做错了什么?
【问题讨论】:
-
myArray = calloc(N, 2*sizeof(bool));->myArray = calloc(N, 2*sizeof(bool*)); -
你的数组已经有 2 个 bool*,你不需要 myArray = calloc(N, 2*sizeof(bool));
-
bool* myArray[2]; -
calloc()返回一个void指针,您将其分配给bool指针。 -
@GauravPathak 这是在 C 中正确的做法。
标签: c arrays memory-management compiler-errors calloc