void GetData(char* buff)
{
cout << "buff = " << buff << endl;
buff = "222222222";
cout << "buff = " << buff << endl;
}
int main()
{
// 只能定义数组类型,不能写成char* 来定义
char buff[128] = "11111111111";
GetData(buff);
cout << "buff = " << buff << endl;
system("pause");
return 0;
}
但是结果却不太理想。是形参无法改变实参的问题么?明明已经将buff的地址传递过去了,却还是不对。有哪位大佬帮我解决一下。
首先你要明确一点,几乎任何编程语言的函数调用都是将实参的值赋值给形参,改变形参不会影响实参。
语句buff = "222222222";是直接把新的字符串"222222222"的首地址赋值给了形参
buff,但是实参buff没有改变且不能改变,buff[128]中的元素也不会改变。
将buff = "222222222";改为 sprintf(buff, "22222222222");或 strcpy(buff, "2222222222");
字符串数组不能用等号赋值,除非你是声明时初始化。