gpt4 book ai didi

c++ - 函数调用中 * 和 & 运算符的区别

转载 作者:行者123 更新时间:2023-11-27 23:23:02 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
C++ functions: ampersand vs asterisk
What are the distinctions between the various symbols (*,&, etc) combined with parameters?

我想知道 C++ 函数调用中地址运算符 & 和引用运算符 * 之间的区别。例如采用以下功能

void foo (std::string& param)
{
param = "Bar.";
std::cout << param.size();
}

然后让我们在我们的 main() 函数中这样调用它...

int main()
{
std::string test;
foo(test); //Why not foo(&test)?
std::cout << test; //Prints out the value "Bar."
}

首先,为什么 & 运算符允许我分配一个值,就好像它是一个指针(分配给它一个在 RAII 和函数 foo() 范围内存活的值 当它不是指针时),因为即使它不是 static 也可以在我的 main() 函数中打印出来?我假设它不是指针,因为我可以使用 . 运算符而不是 -> 来访问 size() 方法用于指针。

其次,在函数参数中使用 & 运算符与使用 * 运算符有什么区别?它甚至与像 std::string param 这样的普通变量不同吗?它似乎是这样调用的(foo(test) 而不是 foo(&test))。

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