【问题标题】: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() 函数的函数原型应该是什么样子的?

【问题讨论】:

    标签: c++ pointers struct


    【解决方案1】:

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

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

    void tick(Settings& settings);
    

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

    settings.member = new_value;
    

    【讨论】:

    • 结构体不会是副本吗?或者其成员的值是否可以在设置它们的函数之外访问?
    • @AbdelAleem,不。是的。 :)
    猜你喜欢
    • 2010-09-20
    • 2012-11-08
    • 2014-04-23
    • 2013-11-18
    • 1970-01-01
    • 2020-05-15
    • 2019-03-22
    • 1970-01-01
    • 2019-08-17
    相关资源
    最近更新 更多