我不明白这部分代码:
char *arrStr[3];
arrStr[0] = "hola"; //works
*(arrStr+1) = "guys"; //works
arrStr++; // doesn't work why?
char **arrStr2 = arrStr; //works
arrStr2++; //works
我不明白为什么
arrStr++
不起作用而arrStr2
起作用。这很奇怪,因为我在做同样的事情,但在一个情况下,它在另一个不工作,为什么?
最佳答案
*arrStr[3]
是指向char
的三个指针数组,而**arrStr2
是指向char
的指针数组。在
arrStr[0] = "hola";
arrStr
是一个数组,数组名是不可修改的l值,因此您不能修改它。另一方面,可以对arrStr
进行修改,因为它是指向指针的指针,而不是数组。请记住数组不是指针。关于c - 指向字符串数组的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20277362/