c++ - 通过参数将字符串文字作为 char* 传递

标签 c++ string arguments

我做了一个改变字符串的函数,见下面的代码。

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/

相关文章:

c++ - 基枚举类继承

javascript - 无法对从 div 检索到的字符串进行切片

python - 有没有一种简单的方法来创建使用Python的 "shortcut"实现其他参数的CLI `argparse` arg?

c++ - c++ 中的 vector 这么慢吗?

c++ - reinterpret_cast 创建一个简单的默认构造对象

android - 如何提高android中的OpenCV人脸检测性能?

php - 将逗号分隔值转换为双引号逗号分隔字符串

string - 有没有一种简单的方法可以在 Rust 中生成小写和大写英文字母表?

javascript - 当我们在数组中有参数时如何调用函数

function - 你能在 swift 中将类型化数组传递给枚举中的函数吗?