我不明白这部分代码:

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/

10-09 18:22