将取消引用的指针作为函数参数传递给结构

Posted

技术标签:

【中文标题】将取消引用的指针作为函数参数传递给结构【英文标题】:Passing a dereferenced pointer to a structure as a function argument 【发布时间】:2019-02-08 21:56:33 【问题描述】:

如果一个函数内部的结构指针被取消引用并作为参数传递给另一个函数,如何访问该函数内部结构的成员?

例如,一个指向结构的指针被传递给这样的函数:

main_logic_tick(&settings);

main_logic_tick 函数内部,指针被取消引用并作为参数传递给另一个函数(即tick()):

void main_logic_tick(Settings* settings)

    //...
    state_machine.tick(*settings);

如何通过上面 tick() 函数中的 settings 变量访问结构 Settings 的成员?是按值调用还是按引用调用?最后,tick() 函数的函数原型应该是什么样子的?

【问题讨论】:

【参考方案1】:

如何通过上面的 tick() 函数中的设置变量访问结构设置的成员?是按值调用还是按引用调用?最后,tick() 函数的函数原型应该是什么样子的?

tick() 可以通过值或引用接受Settings 对象。听起来您希望它通过引用接受其参数——您希望能够修改对象并使修改在上游的两个函数中可见。为此,您将使用:

void tick(Settings& settings);

tick 中,您可以使用通常的语法来访问引用的成员——使用点 (.) 运算符。

settings.member = new_value;

【讨论】:

结构体不会是副本吗?或者其成员的值是否可以在设置它们的函数之外访问? @AbdelAleem,不。是的。 :)

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

如何将子类作为期望基类的函数的参数传递,然后将该对象传递给指向这些抽象类对象的指针向量?

C将int数组指针作为参数传递给函数

如何将引用函数传递给另一个函数

如何将 JS 函数的引用作为参数传递给 ExternalInterface 调用?

结构与函数的关系

对象作为参数传递给另一个类,通过值还是引用?