如何将结构成员作为引用传递给函数?

Posted

技术标签:

【中文标题】如何将结构成员作为引用传递给函数?【英文标题】:How to pass a struct member as a reference in a function? 【发布时间】:2021-03-08 18:11:27 【问题描述】:
#include<stdio.h> 
typedef struct  int i; float f; num;
    
void func (int *);
    
int main() 
    num *ex; func(&ex->i);
    printf("Number = %d",ex->i);

    
void func(int *num) 
    *num = 4;

为什么这段代码会出现分段错误?

【问题讨论】:

这能回答你的问题吗? How does dynamically allocating a struct in C work? 【参考方案1】:

问题不在于将参数传递给funcex 是指向 num 结构的未初始化指针。您可以显式分配它(只是不要忘记在完成后释放它):

num* ex = malloc(sizeof(num));

【讨论】:

或者,只需执行num ex[1]。或num ex; func(&amp;ex.i);

以上是关于如何将结构成员作为引用传递给函数?的主要内容,如果未能解决你的问题,请参考以下文章

Python: 通过引用将类成员项传递给它的一个成员函数。

使用引用将结构传递给函数时出错[重复]

通过引用传递给构造函数

如何将 void* 的引用从 C++/CLI 传递给本机 C 函数

试图取消引用一个接口,该接口是一个指向后端结构对象的指针,以便我可以按值传递给函数

将 std::forward_as_tuple() 结果传递给可能从该对象的右值引用成员移动的多个函数?