结构内部指针的动态内存分配
Dynamic Memory Allocation for Pointers inside Struct
之前在 Stack Overflow 上有人问过同名问题,但这不是我要找的答案。
我正在尝试创建一个指向包含像素数据的动态分配数组的指针。
我就是这样尝试的。
struct Image {
int width;
int height;
int* pixels = malloc((width * height) * sizeof(int));
};
Error Message
但是我收到一个预期为“;”的错误
结构外的相同代码工作正常。
谁能解释一下为什么会出现这个错误。
The same code outside the struct works fine.
Can someone please explain to me why this errror occurs.
这是因为 C 中的 struct
不同于 struct
C#:
在 C 中,您不能像这样为结构成员分配“默认”值:
struct myStruct {
int a = 2;
int b = 4;
};
您只能将初始 常量 值分配给具有 struct
类型的 变量:
struct mystruct {
int a;
int b;
};
struct mystruct myvar = { 5, 6 }; /* myvar.a=5, myvar.b=6 */
... 但是因为 malloc()
是一个函数调用,下面这行在 C:
中也是不可能的
struct Image myVariable = { 10, 20, malloc(200) };
您必须初始化“struct
”之外的字段pixels
。
之前在 Stack Overflow 上有人问过同名问题,但这不是我要找的答案。
我正在尝试创建一个指向包含像素数据的动态分配数组的指针。
我就是这样尝试的。
struct Image {
int width;
int height;
int* pixels = malloc((width * height) * sizeof(int));
};
Error Message
但是我收到一个预期为“;”的错误
结构外的相同代码工作正常。
谁能解释一下为什么会出现这个错误。
The same code outside the struct works fine.
Can someone please explain to me why this errror occurs.
这是因为 C 中的 struct
不同于 struct
C#:
在 C 中,您不能像这样为结构成员分配“默认”值:
struct myStruct {
int a = 2;
int b = 4;
};
您只能将初始 常量 值分配给具有 struct
类型的 变量:
struct mystruct {
int a;
int b;
};
struct mystruct myvar = { 5, 6 }; /* myvar.a=5, myvar.b=6 */
... 但是因为 malloc()
是一个函数调用,下面这行在 C:
struct Image myVariable = { 10, 20, malloc(200) };
您必须初始化“struct
”之外的字段pixels
。