【发布时间】:2020-08-21 05:27:08
【问题描述】:
例如我有一个struct
struct s{
char c;
int x;
};
我使用calloc() 分配内存。
s *sp = (s*) calloc(1, sizeof(s));
现在,sp->c 和 sp->x 的值是多少?
【问题讨论】:
-
calloc()将内存初始化为零。sp->c和sp->x将是0(分别为char和int类型)。顺便说一句:强制转换calloc()的返回值充其量是多余的(并且可能隐藏一个错误,如果没有强制转换,编译器会警告你)。 -
回答标题中的问题:字符存储为数字。还是您的意思是结构,而不是字符?整个结构将被清零:它的所有成员,以及任何留作填充的空间。
-
如果您不想要 C++,请在源文件顶部添加
#ifdef __cplusplus/#error bad compiler/#endif。
标签: c memory-management struct dynamic-memory-allocation calloc