c++将char数组传递给函数并更改它

标签 c++

我尝试做一个可以改变指定字符数组内容的函数

void change_array(char *target)
{
    target="hi";
}

int main()
{
    char *a[2];
    change_array(a[1]);
    cout<<*(a[1]);
}

但是 a[1] 的内容停留在 0x0(void)

最佳答案

首先,您的函数有传递给它的指针的拷贝,因此在调用方看不到任何效果。如果要修改函数参数,传递一个引用:

void change_array(char*& target) { ... }
//                     ^

其次,您不能/不应该将非常量指针绑定(bind)到字符串文字。请改用 const char*

void change_array(const char*& target) { ... }
//                ^^^^^      ^

int main()
{
    const char* a[2];
    change_array(a[1]);
    cout<<*(a[1]);
}

关于c++将char数组传递给函数并更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533137/

相关文章:

c++ - 分数结构数组

c++ - 将一个数组复制到另一个数组而不重复 C++

c++ - 写入套接字时使用 write() 而不是 send() 的性能影响

c++ - 在不知道模板参数的映射中获取派生类的模板参数类型

c++ - 如何使用关键事件来翻译 OpenGL 中的对象?

c++ - boost::asio::buffer:获取缓冲区大小并防止缓冲区溢出?

c++ 我更改了我的列表(和代码),因此它现在处理 Node* 而不是 Node 对象,并且它导致了 undefined reference 错误

c++ - 我如何发送 gzip 而不是通过跳过 header 缩小

c++ - 是否有嵌套类的用例?

c++ - 具有虚函数和非虚函数的 unique_ptr::get() 函数