【发布时间】:2018-09-01 07:06:25
【问题描述】:
好的,所以我是 C++ 新手,我只是想问一下为什么您不应该通过引用“&”符号来传递 char 数组,但您应该使用字符串,因为这两个参数都是指针。我写的示例代码:
void changeChar(char* buffer, int bSize) {
strcpy_s(buffer, bSize, "test123");
}
void changeString(string* buffer) {
*buffer = "test321";
}
char mychar[10] = "hello world";
string mystr;
changeChar(mychar, sizeof(mychar));
changeString(&mystr);
【问题讨论】:
-
请注意,您提供的示例中没有使用任何引用。
-
std::string不是指针,它是一个类。通过值传递一个类会创建一个副本,而通过引用传递它允许您访问原始对象。通过引用传递指针与通过值传递相比没有净收益,而在std::string的情况下,它避免了创建副本。 -
char mychar[10] = "hello world";你觉得在做什么? -
好的,但是我不是将指针“缓冲区”分配给 mystr 的内存地址还是发生了什么?
-
changeString(&mystr);中的&是地址运算符(与引用无关),它返回mystr的地址见:en.cppreference.com/w/cpp/language/…
标签: c++ arrays pointers stdstring