gpt4 book ai didi

c++ - 对 C++ 指针和引用主题的困惑

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:04 24 4
gpt4 key购买 nike

C++中下列参数传递机制有什么区别?

void foo(int &x) 
void foo(int *x)
void foo(int **x)
void foo(int *&x)

我想知道在什么情况下参数是按值传递还是按引用传递。

最佳答案

void foo(int &x)

传递一个整数的引用。这是一个输入/输出参数,可以像函数中的常规整数一样使用。值被传递回调用者。


void food(int *x)

传递一个指向整数的指针。这是一个输入/输出参数,但它像指针一样使用,必须取消引用(例如 *x = 100;)。您还需要检查它是否不为空。


void foo(int **x)

将指针传递给指向整数的指针。这是一个整数指针类型的输入/输出参数。如果您想更改整数点的值(例如 *x = &m_myInt;),请使用此选项。


void foo(int *&x)

将引用传递给指向整数的指针。像上面一样,但不需要取消引用指针变量(例如 x = &m_myInt;)。


希望这是有道理的。我建议使用 typedef 来简化指针和引用符号的使用。

关于c++ - 对 C++ 指针和引用主题的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com