我试着用C语言做以下工作:
。
我尝试使用一个结构,要么使用2d数组成员,要么使用指向2d数组的指针-参见下面的代码。
我可能只需要使用malloc分配的双指针,并有一个双指针结构成员,但我试图避免动态分配(我想了解哪里出了问题)。我也不想复制数组,因为回调函数可能会变异数据。
#include <stdio.h>
struct numbers_struct {
int numbers[2][3];
};
struct pointer_to_numbers_struct {
int (*numbers)[2][3];
}
int main() {
int numbers[2][3] = { {1,2,3},{4,5,6} };
/* try to use struct with 2d array member
* error: array type `int[2][3]` not assignable */
struct numbers_struct num_struct;
num_struct.numbers = numbers;
/* try to use struct with pointer to 2d array member
* contains random/invalid data */
struct pointer_to_numbers_struct ptr_num_struct;
ptr_num_struct.numbers = &numbers;
}发布于 2021-03-14 16:51:02
不能分配这样的数组,请尝试memcpy:
memcpy(num_struct.numbers, numbers, sizeof numbers);发布于 2021-03-14 22:45:00
您可以在struct numbers_struct的初始化器中初始化数组。
struct numbers_struct num_struct = { { {1,2,3},{4,5,6} } };
struct pointer_to_numbers_struct ptr_num_struct = { &num_struct.numbers };如果希望结构持久,请将static添加到其定义中。
https://stackoverflow.com/questions/66626685
复制相似问题