C 数组中的左值必需错误 #包括 #包括 main() { int x[100]; int i; for(i=0;i
数组名称是不可修改的l值。您不能修改它。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值是一个表达式,可以位于赋值的左侧。当您要声明许多
*(++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;