Sla*_*ter 1 c memory malloc struct pointers
我最近有一个任务,我必须动态地为结构分配内存.我用这个方法:
myStruct *struct1 = malloc(sizeof *struct1);
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我不明白怎么做.我认为struct1
指针在那一点是未初始化的,因此应该没有任何大小.那么如何malloc(sizeof *struct1)
返回有效的内存量来分配呢?
sizeof
C中的运算符不计算操作数.它只是看着类型.例如:
#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
未进行评估,它仅用于类型信息.