我做了一个改变字符串的函数,见下面的代码。
void Test(char* str, char c) {
str[1] = c;
}
int main(){
Test("Hi", '2');
}
我注意到它产生了一些运行时错误。我知道如何防止错误。
char buff[3] = "Hi";
Test(buff,'2');
但我不知道为什么第一个例子会出现运行时错误。我想,如果我直接传递字符串,它就会变成 const char。谁能解释一下到底发生了什么?
附言。 如果我使用 char* str = "hi",然后将其传递给参数会怎样?
char* buff = "Hi";
Test(buff,'2');
像这样。我可以修改buff吗?
最佳答案
因为"Hi"
是string literal并且不允许修改,所以它们是只读的(string literal的类型是const char[ n]
).
修改它是未定义的行为。
关于您的编辑:char* str = "hi"
无效,应该是 const char* str = "hi"
。这是指向 const char
的指针。同样,修改它是不允许的。
关于c++ - 通过参数将字符串文字作为 char* 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21131995/