gpt4 book ai didi

c - 在 C 中返回二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:17 25 4
gpt4 key购买 nike

这很愚蠢,但我无法获得正确的类型签名或其他东西。我想让一个函数返回一个二维数组(一维大小固定,另一维大小可变),但我做错了。最小示例:

void useit(unsigned long sz) {
uint32_t arr[sz][8] = makeit(sz);
// Do something useful with arr here
}

// Stub function for allocating and filling an array
uint32_t (*makeit(ulong sz))[8] {
uint32_t (*arr)[8] = malloc(8*sz*sizeof(int));
int i, j;
for (i = 0; i < sz; i++) {
for (j = 0; j < 8; j++) {
arr[i][j] = 10*i+j+11;
}
}
return arr;
}

但我没有正确的签名,因为 gcc 提示:

error: incompatible types when assigning to type 'uint32_t[8]' from type 'uint32_t (*)[8]'

最佳答案

您不能使用:

uint32_t arr[sz][8] = makeit(sz);

因为 VLA 可能未被初始化。

使用:

uint32_t (*arr)[8] = makeit(sz);

http://ideone.com/iuqtlJ 查看它的工作情况.

关于c - 在 C 中返回二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35207986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com