C语言: error C2106: '=' : left operand must be l-value

int a[100],(*p)[100];
for(i=0;i<n;i++)
p[i]=&a[i];
我定义了一个整型数组和 一个指针数组,
想让每个指针数组的元素指向每个整型数组的元素
可系统老提示error C2106: '=' : left operand must be l-value
这是为什么?

error C2106: '=' : left operand must be l-value的意思是做操作数的值必须为长整型整数。*p[100]是设一个指针,指向的是可以存放100个数的数组,p[i]就是指向第i个可以存放100个数的数组,不是指向长整型整数。定义的时候直接定义为p[100]就行了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-15
行参定义为char
name[][8],char
dep[][10]
name,dep都是二维字符数组,所以name[j]是一维字符数组,相当于一个const
char
*,所以不能作为等号的左操作数
name[j]=name[j+1];
dep[j]=dep[j+1];
这两句都是错误的
第2个回答  2012-12-03
你定义的是数组指针,所以p[i]相当于是个数组名,不能给赋值的
int *p[100]; 这才是指针数组,p[i]是个指针,可以赋值
第3个回答  2012-12-01
你写错了。p写成数组指针了。改成
int *p[100];
第4个回答  2019-11-04
左操作数必须是个l-value类型的数据
l-value我想应该是个left-value,也就是左值,只有变量和看作指针的内存空间可以被看作是左值
如:
int
x=10;
int
&rx=x;
rx=100;
int
*px=x;
*px=1000;
*(px+10)=100;
而下面的这些是错误的
10=x;
x+rx
=
100;
px+10
=
50;
他们的提示都是error
C2106:
'='
:
left
operand
must
be
l-value
多点代码好分析