尝试设置char数组的字符时程序崩溃

Sin*_*yas 1 c++ char

我得到了我的程序这种奇怪的行为,我无法弄清楚.我的教授在我的程序中向我展示了一个缺陷,我只是在构造一个对象时复制一个char指针,而不是制作整个数组的新副本,所以你可以随意使用它.他用类似的代码证明了这一点.

对于代码:

char sweat[] ="Sweater";
warenkorb = new WareImKorb(new Textil (205366,4.2,sweat,40),2,warenkorb);
sweat[0] = '\0';
Run Code Online (Sandbox Code Playgroud)

现在,如果我改为:

char* sweat ="Sweater";
Run Code Online (Sandbox Code Playgroud)

该程序运行良好,直到我尝试汗[0] ='\ 0'; 它只是简单的.

然而,这有效:char cc [] ="Sweater"; char*sweat = cc;

它真的很烦我,我不明白,为什么版本1不起作用.希望你们能帮助我,否则我会疯狂地想知道这件事.

Eri*_*rik 5

"Sweater"是一个字符串文字,可以驻留在只读内存中.使用char []语法将此文字复制到char数组中,使用char*语法(实际上应该是const char*)只指向原始字符串文字.