gpt4 book ai didi

c++ - foo(int& x); x 是通过引用传递的吗?

转载 作者:行者123 更新时间:2023-11-30 02:44:54 30 4
gpt4 key购买 nike

这是:

  void foo(int& x){
....
}
....
foo(arg);

与此相同:

  void foo(int * x){
....
}
....
foo(&arg);

它们会导致相同的结果吗?第一个参数是否也通过引用传递?

最佳答案

& 符号可以与声明中的类型一起使用,例如像这样:

int& x; // #1

或在标识符之前,例如像这样:

&x // #2
  • 第一个变体意味着您将变量声明为引用(在本例中是对int 的引用)。

  • 第二种变体意味着您调用 address-of 运算符,它返回数据的内存地址。

& 的两种用法完全不相关,彼此没有关系。他们只是使用相同的符号。


在您的第一个示例中,您通过引用将参数声明为int(声明类型时使用&):

void foo(int& x) {
/* ... */
}
/* ... */
foo(arg); // Pass 'arg' to function.

在您的第二个示例中,您声明了一个函数,该函数通过指向 intpointer 接受参数,稍后您使用 address-of 运算符arg 传递之前(有效传递 arg 的地址):

void foo(int* x) {
/* ... */
}
/* ... */
foo(&arg); // Pass address of 'arg' to function.

相关:

关于c++ - foo(int& x); x 是通过引用传递的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014681/

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