c - 使用 malloc 初始化结构
问题描述
要创建结构,我可以执行以下操作之一:
// Method 1
Item *item = malloc(sizeof(Item));
Item _item = {.name="job"};
item = &_item;
// Method 2
Item *item = malloc(sizeof(Item));
item->name="job";
有没有更简单的方法来做到这一点?也许是这样的:
malloc(sizeof(Item)) & (Item) {.name="job"}
以下是两种方法:https ://godbolt.org/z/MfYGW3
解决方案
使用复合文字:
Item *item = malloc(sizeof *item);
*item = (Item) {
.name = "job",
};
您的第一种方法是不正确的(即使没有错字),因为您只是丢弃了刚刚malloc
编辑的内存。你想写Item = _item;
推荐阅读
- git - 将 svn 迁移到 git 并在 svn 上通过修订签入到 git
- operating-system - 中断期间在操作系统/硬件级别采取了哪些步骤(例如键盘快捷键)?
- javascript - js 中的实时 Cookie 检查器
- apache-kafka - Confluent Cloud 中的消息值未正确解码
- excel - 自定义图表点数据标签位置
- r - 错误:使用 scale_colour_hue 时向 ggplot2 中的离散比例提供连续值
- asp.net-mvc - 存储页面刷新查询结果的最佳实践
- javascript - 会话存储被擦除
- reactjs - 来自redux的array.map不会在第一次加载react组件时返回数据
- javascript - 使用 Ajax/Axios 时从 FileStreamResult 获取文件名?