gpt4 book ai didi

c++ - const char[] 和 char[] 的区别

转载 作者:搜寻专家 更新时间:2023-10-31 00:13:13 25 4
gpt4 key购买 nike

Marray(char MyString [])
Marray(const char MyString [])

这两条线有什么区别?我正在阅读 const char*char* 之间的区别。 char[]const char[] 是一样的吗?我很困惑,因为在这两种情况下,当我重载运算符 [] 时,可能会更改字符串文字。 const char* 是指向不可变字符/字符串的可变指针。 -- 所以我期望 const char [] 也一样,但是字符串是可变的...

更多代码:

构造函数:

Marray::Marray(const char MyString []){
length = 0;

while(MyString[length]!=NULL){
length ++;
}

text= new char [length+1];

int i;
for (i=0; i<length; i++)
*(text+i)=MyString[i];
text[length]=NULL;
}

char & Marray::operator[] (int i) const { return text[i];}

int main () {

Marray n("String");

n[3]='d';

n.getMarray();

system("pause");
return 0;
}

这是我运行后得到的:

Strdng

因此,即使存在 const char[],字符串也会发生变化。

最佳答案

I was reading about difference between const char* and char*. Is it the same with char[] and const char []?

对于大多数实际用途,答案是"is"。虽然通常 char const*char const[] 是两种不同的类型,但根据上下文,一种可以变成另一种。在这个特定的上下文中(函数参数的声明),它们的意思是一样的。

So I was expecting the same with const char [], but the string is mutable

不,由于 const 限定符 (demo),传递给函数的 C 字符串保持不变。尝试在 Array 中修改 const char MyString[] 会产生编译时错误:

error: assignment of read-only location ‘* s’

关于c++ - const char[] 和 char[] 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27622520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com