Nar*_*uto 6 c++ arrays pass-by-reference
我通过引用传递一个char数组但是当我从函数返回并打印数组时,它什么也没显示.我究竟做错了什么?
#include <iostream>
using namespace std;
void func(char []);
int main()
{
char a[100];
func(a);
cout << a<<endl;
return 0;
}
void func(char *array)
{
array="Inserting data in array a";
cout << array<<endl;
}
Run Code Online (Sandbox Code Playgroud)
问候
你可能做的是:
void func( char (& array)[10] ) {
}
Run Code Online (Sandbox Code Playgroud)
转换为:通过引用()传递[..]10([10])字符(char)的数组((& ..)).
你没有通过引用传递数组(你也不应该,这对你没有好处).您正在将指针传递给其第一个元素.然后,您将该指针重新指定为指向函数内的其他内容.这对阵列没有影响.如果要更改数组的内容,则需要将数据复制到指针指向的位置.你可以使用strcpy或类似的:
strcpy(array, "Inserting data in array a");
Run Code Online (Sandbox Code Playgroud)
作为评论,但非常重要.我们不再需要在C++中处理这样的事情了.这就是你在C中做事的方式.这就是我们用C++做事的方式:
#include <string>
#include <iostream>
void func(std::string & str)
{
str = "Inserting data into the string";
std::cout << str << std::endl;
}
int main()
{
std::string a;
func(a);
std::cout << a << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
您可以通过引用传递指针.为此,您需要以下语法:
void func(char *&array)
{
// ....
}
Run Code Online (Sandbox Code Playgroud)
在函数内部,您将此参数用作简单指针.只有在修改后,这些更改才会在外部显示.