c - 通过 calloc() 分配结构:成员初始化为哪个值?
问题描述
例如我有一个struct
struct s{
char c;
int x;
};
我用它calloc()
来分配内存。
s *sp = (s*) calloc(1, sizeof(s));
现在sp->c
,和的值是sp->x
什么?
解决方案
“和的值是什么?
sp->c
sp->x
”
由于calloc()
将分配内存的所有位设置为0
,c
并且如果值表示和的所有位为(这是常见的) ,x
则将具有的值。0
0
int
char
0
NULL
请注意,在指针的情况下,当仅将所有位设置为 C 标准时,指针可能不是符合标准的指针,0
因为 C 标准不需要NULL
指针的表示为全零位。
旁注:
1.
struct s{
char c;
int x;
};
s *sp = (s*) calloc(1, sizeof(s));
不能像s
is'ta typedef
d 类型那样工作;它是一个结构标签。因此,您需要在s
关键字struct
前面:
struct s *sp = (struct s*) calloc(1, sizeof(struct s));
2.
您不需要从calloc()
和其他内存管理函数中转换返回的指针,而是避免它,因为它会给您的代码添加混乱。->我要转换 malloc 的结果吗
因此,只需执行以下操作:
struct s *sp = calloc(1, sizeof(struct s));
推荐阅读
- python - numpy 沿第一个轴添加
- php - CKeditor表单问题将帖子添加到数据库
- linux - 显示名称中包含空格的文件大小
- iis - 如何在应用程序池回收期间关闭文件
- android - 领域模型不是此领域架构的一部分
- css - 设计不同的警报结果?
- ios - iOS 音乐库:如何判断给定的播放列表是否为文件夹
- reactjs - 将 MobX 状态树存储注入反应组件抛出错误
- r - 在R中使用正则表达式的某个字符串模式之后的所有第一个数字
- javascript - 如何从 Cloud Function 访问存储在 Firestore 中的 DocumentReference 对象?