C 数组中的左值必需错误 #包括 #包括 main() { int x[100]; int i; for(i=0;i

C 数组中的左值必需错误 #包括 #包括 main() { int x[100]; int i; for(i=0;i,c,arrays,pointers,C,Arrays,Pointers,数组名称是不可修改的l值。您不能修改它。*(++x)=i错误。您可以尝试此操作 #include <stdio.h> #include <string.h> main() { int x[100]; int i; for(i=0;i<10;i++) { *(x++) = i; } } int*ptr=x; 对于(i=0;i),可修改的l值不能具有数组类型。l值是一个表达式,可以位于赋值的左侧。当您要声明许多

数组名称是不可修改的l值。您不能修改它。
*(++x)=i
错误。您可以尝试此操作

#include <stdio.h>
#include <string.h>

main()
{
    int x[100];
    int i;
    for(i=0;i<10;i++)
    {
        *(x++) = i;
    }
}
int*ptr=x;

对于(i=0;i),可修改的l值不能具有数组类型。l值是一个表达式,可以位于赋值的左侧。当您要声明许多相同类型的变量时,可以使用数组,并且可以轻松地对其进行索引,因为它的布局在某种意义上是连续的

当您希望不断更改变量指向的地址的值时,可以使用指针

您可以做的是:

int *ptr = x;
for(i=0;i<10;i++)
{
    *(ptr++) = i;
}
intx[100];
int*p_x=&x[0];
int i;
对于(i=0;i直线:

int x[100];
int *p_x = &x[0];
int i;
for(i=0;i<10;i++)
{
    *(p_x++) = i;
}

尝试递增
x
,它是数组的名称,不是左值(即不能出现在赋值的左侧,并且不可修改)。

数组类型的表达式,例如
x
不能是
+
运算符的操作数

除了数组元素本身(
x[0]
x[99]
),没有为变量
x
预留存储空间;照此,内存中没有可以应用自动递增运算符的内容。
x
将“衰减”在大多数情况下,指向指针值,但该指针值不会存储在您可以修改它的任何位置

如其他人所示,您可以声明一个单独的指针变量,并使用它代替
x

*(x++) = i
int *p = x;
for ( i = 0; i < 100; i++ )
  *p++ = i;
for ( i = 0; i < 100; i++ )
  x[i] = i;