我尝试做一个可以改变指定字符数组内容的函数
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/