如果我可能没有正确表达问题,我很抱歉,但在以下代码中:
int main() {
char* a=new char[5];
a="2222";
a[7]='f'; //Error thrown here
cout<<a;
}
如果我们试图在程序中访问 a[7],我们会得到一个错误,因为我们没有被分配 a[7]。
但是如果我在课堂上做同样的事情:
class str
{
public:
char* a;
str(char *s) {
a=new char[5];
strcpy(a,s);
}
};
int main()
{
str s("ssss");
s.a[4]='f';s.a[5]='f';s.a[6]='f';s.a[7]='f';
cout<<s.a<<endl;
return 0;
}
该代码有效,打印字符“abcdfff”。当我们只将 char[5] 分配给我们在第一个程序中无法这样做的时候,我们如何能够访问代码中的 a[7] 等?