如何在C中动态分配结构?

Sla*_*ter 1 c memory malloc struct pointers

我最近有一个任务,我必须动态地为结构分配内存.我用这个方法:

myStruct *struct1 = malloc(sizeof *struct1);
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,我不明白怎么做.我认为struct1指针在那一点是未初始化的,因此应该没有任何大小.那么如何malloc(sizeof *struct1)返回有效的内存量来分配呢?

Alo*_*hal 5

sizeofC中的运算符不计算操作数.它只是看着类型.例如:

#include <stdio.h>

int main(void)
{
    int i = 0;
    printf("%zu\n", sizeof i++);
    printf("%d\n", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果你运行上面的程序,你会发现它i仍然是0.

因此,在您的示例中,*struct1未进行评估,它仅用于类型信息.