SOLA&AIR
2021-03-17 10:56
采纳率: 100%
浏览 27

字符串数组地址传递问题

 

  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的地址传递过去了,却还是不对。有哪位大佬帮我解决一下。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 开发者小峰 2021-03-17 22:16
    已采纳

    首先你要明确一点,几乎任何编程语言的函数调用都是将实参的值赋值给形参,改变形参不会影响实参。

    语句buff = "222222222";是直接把新的字符串"222222222"的首地址赋值给了形参

    buff,但是实参buff没有改变且不能改变,buff[128]中的元素也不会改变。

    点赞 1 评论
  • peng450 2021-03-17 11:23

    将buff = "222222222";改为 sprintf(buff, "22222222222");或 strcpy(buff, "2222222222");

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

    点赞 评论

相关推荐 更多相似问题