[英]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.