字符串数组地址传递问题

 

  1. 我想在 GetData() 函数中修改buff的值,然后写了这些下列代码
  •  

    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");

字符串数组不能用等号赋值,除非你是声明时初始化。