我尝试编写一个函数,可以更改指定字符数组的内容。
void change_array(char *target)
{
target="hi";
}
int main()
{
char *a[2];
change_array(a[1]);
cout<<*(a[1]);
}
但是a[1]的内容仍然保持在0x0(void)。
char*
而不是std::string
?如果你没有立即和紧迫的需要使用 C 字符串,我建议你使用std::string
。请注意,这只是翻译,不包括解释或其他额外的内容。 - anjruustd::string
(或者对于这种用例来说更好的是std::vector<char>
)来管理内存。这几行代码有一些问题:a
未初始化保持在0x0处是不正确的,而是保留一个未确定的值。字符串字面值不是char *
(尽管出于历史原因编译器可能允许target =“hi”;
,但如果您尝试修改它,则行为将是未定义的,并且很可能会崩溃... - David Rodríguez - dribeas