c - 使用指向从函数返回的结构的指针
问题描述
我有一个克隆结构成员并返回结构(非指针)的函数。这个新创建的对象是短暂的。
struct my_struct {
int a;
int b;
};
inline struct my_struct my_struct_clone(struct my_struct src, int members){
struct my_struct copy = {0};
//... Do copy based on args
return copy;
}
我无法返回指针,因为它将指向已释放的内存。如何将克隆函数的返回值作为指向第二个函数的指针传递?类似于以下内容,但不使用中间占位符。
void do_sth(struct my_struct const *p);
struct my_struct val = my_struct_clone(&other, 123);
do_sth(&val);
以下失败(需要左值作为一元“&”操作数):
do_sth(&(my_struct_clone(&other, 123)));
但是可以声明一个结构内联
do_sth(&(struct my_struct){.a = 1, .b = 2});
解决一些关于使用中间体的评论。问题是关于避免创建一个,而不是“我不能使用一个,因为......”。我最近遇到了一个我认为可以但发现我做不到的编码结构,因此提出了这个问题。此外,将已经分配的实例传递给克隆函数仍然需要一个中间体。我宁愿不要用像这样短暂的变量声明来混淆函数头。
解决方案
推荐阅读
- html - 如何使导航栏项目居中?(响应地)
- android - 地理围栏应用程序不断停止
- reactive-programming - 奇怪的行为服务器使用 WebFlux 发送事件
- javascript - 如何在响应式菜单中居中对齐导航链接?
- python - 如何计算列中的众数值,同时忽略此列中的值“-1”?
- node.js - router.post / 使用 Node JS、express、mongoose 将嵌套数组添加到 MongoDB 数据库
- bash - ECS/Fargate 容器定义命令参数
- excel - 在 Excel 2010 中寻找公式或 VBA 以输入今天的日期并将其冻结
- javascript - javascript中的乒乓球游戏碰撞
- php - 映射查询结果仅聚合在一个数字下