【发布时间】:2010-08-26 21:18:47
【问题描述】:
C++:从函数中使用和返回字符数组,返回类型还是引用?
我正在尝试在函数之外创建一个以空字符结尾的字符串,然后运行一个函数,该函数将为它分配一些数据。例如,char abc [80] 是在 main 中创建的。然后运行input(),它将用户输入返回到abc。我认为两种明显的方法是:
1。 使输入函数将输入返回给 main 中的变量,例如:
char input ()
{
char input [80];
getline(cin, choice);
return input;
}
int main ()
{
char choice [80];
choice = input ();
...
}
2。 将字符数组传递给我的引用的输入函数,然后从那里将数据放入其中:
...
void input (&variable)
{
getline(*variable, cin);
return;
}
int main ()
{
char choice [80];
char* pointer;
input (pointer);
...
}
但是,我无法使用这两种方法中的任何一种。那么,我做错了什么,我该如何解决?
【问题讨论】:
-
你做错了什么?在 C++ 程序中传递 C 类型的字符串。除非您有充分的理由使用
char *字符串并且坚持反对我们,但您的示例没有显示任何内容。 -
你应该真正开始学习 C++(或者 C,如果这个问题真的是 C 问题而不是 C++)。
-
我同意所有说要使用
std::string的人的观点(除非你有好的理由不这样做),但我还要指出你的第一个 input() 函数非常无聊:它声称返回单个字符,而不是字符 。但是,即使您进行了更改,代码也会失败:您正在返回一个指向 input[] 的指针,该指针分配在 * 堆栈上 并猜测函数返回时会发生什么?没错——它在堆栈上分配的任何东西都消失了。所以你返回一个指向乱码的指针。因此,如果必须使用 char*,则应将缓冲区传递给输入函数。
标签: c++ arrays pointers string