结构内部指针的动态内存分配

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