[英]Using a constant-length 2D array as a struct member in C
我正在尝试在 C 中执行以下操作:
我尝试使用带有二维数组成员或指向二维数组的指针的结构 - 请参见下面的代码。
我可能只使用用 malloc 分配的双指针并有一个双指针结构成员,但我试图避免动态分配(我想了解出了什么问题)。 我也不想复制数组,因为回调 function 可能会改变数据。
#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;
}
您不能分配这样的数组,请尝试使用 memcpy:
memcpy(num_struct.numbers, numbers, sizeof numbers);
您可以在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
添加到其定义中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.