我正在从函数返回一个char。当我在屏幕上看到这些奇怪的符号时,一切正常。
#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;
}
我有问题的照片,但似乎我不能发布任何问题。输出看起来像随机bloks后跟数字和符号。这不是一个地址。它确实可以编译并运行程序。在FirstName之前和之后的cout,所有输出都很好。但是,FirstName本身会输出符号和块。
答案 0 :(得分:3)
outStr = FirstName
实际上并不复制字符串,只是指定outStr
参数变量指向FirstName
内testfunc()
数组的第一个元素; <{1}}中的FirstName
数组未被修改。
使用main()
复制字符串,或者(更好)使用strcpy()
而不是字符数组。