考虑这个定义:
char *pmessage = "now is the time";
Run Code Online (Sandbox Code Playgroud)
在我看来,pmessage将指向内存中包含这些字符的连续区域和最后一个字符'\0'.所以我从中得出,只要我在这个区域的范围内,我就可以使用指针算法来访问该字符串中的单个字符.
那么为什么他们说(K&R)修改个别角色是不确定的?
此外,为什么当我运行以下代码时,我得到一个"分段错误"?
*(pmessage + 1) = 'K';
Run Code Online (Sandbox Code Playgroud) 我得到了我的程序这种奇怪的行为,我无法弄清楚.我的教授在我的程序中向我展示了一个缺陷,我只是在构造一个对象时复制一个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不起作用.希望你们能帮助我,否则我会疯狂地想知道这件事.