【发布时间】:2014-12-01 19:46:44
【问题描述】:
我正在努力从函数中返回一个字符。当我在屏幕上看到这些奇怪的符号时,一切正常。
#include <iostream>
void testfunc(char* outStr);
int main()
{
char FirstName[10];
testfunc(FirstName);
std::cout << "So far so good.";
std::cout << std::endl;
std::cout << FirstName;
std::cout << std::endl;
std::cout << "It worked!";
std::cout << std::endl;
system("pause");
return 0;
}
void testfunc(char* outStr)
{
char FirstName[10];
std::cin >> FirstName;
outStr = FirstName;
}
我有问题的图片,但似乎无法发布任何内容。输出看起来像随机块,后跟数字和符号。这不是地址。它确实可以很好地编译和运行程序。 cout 在 FirstName 之前和之后,所有输出都很好。然而,FirstName 本身会输出符号和块。
【问题讨论】:
-
outStr = FirstName只复制方向。使用strcpy(outStr, FirstName)。或者更好的是,使用std::string -
我不认为这是该特定问题的重复;违规行是
outStr = FirstName,这似乎是试图复制数组内容。 -
1.只要函数返回,
testfunc()中的FirstName数组就会失效。 2.outStr = FirstName;实际上没用,它不会改变main()中声明的char FirstName[10];(提示,尝试strncpy()而不是=!)