C声明char*数组

9 c

我以为你可以声明一个数组,然后再启动它.

像这样

char* myArray[3];


//CODE INBETWEEN 

myArray[3] = {

            "blah",
            "blah",
            "blah"};
Run Code Online (Sandbox Code Playgroud)

Mik*_* Mu 20

不,你只能在第一次声明时初始化一个数组.原因是数组不是可修改的左值.

在你的情况下:

char *array[] = {"blah", "blah", "blah"};
Run Code Online (Sandbox Code Playgroud)

您无需指定大小,但您可以根据需要指定大小.但是,在这种情况下,尺寸不能小于3.此外,三个字符串被写入只读内存,所以array[1][2] = 'c'将第二个"blah"更改为"blch"通常会导致段错误.

  • 更确切地说,大多数上下文中的数组都是rvalues而不是lvalues,并且不允许赋值给rvalue. (2认同)