读书人

error C2106: #039;=#039; : left operand mus

发布时间: 2012-04-10 21:03:56 作者: rapoo

error C2106: '=' : left operand must be l-value左值问题
这里有一小段代码,总是显示M[i][0]到M[i][5]不是左值,这是什么问题,XX[i],YY[i]都有定义

C/C++ code
    M=(int *)malloc(t*6*sizeof(int));            for(i=0;i<t;i++)            {                M[i][0]=XX[i]*XX[i];                M[i][1]=XX[i]*YY[i];                M[i][2]=YY[i]*YY[i];                M[i][3]=XX[i];                M[i][4]=YY[i];                M[i][5]=1;            }

以上6行每行都会有不是左值的错误,还有error C2109: subscript requires array or pointer type,这又是什么意思。
之前我用的这个代码定义M就没有以上的错误,有什么区别啊
C/C++ code
M=(double **)malloc(t*sizeof(double *));            if (NULL==M)                 return;            for (i=0;i<t;i++)             {                M[i]=(double *)malloc(6*sizeof(double));                if (NULL==M[i])                     return;            }



[解决办法]
因为你第一个是一级指针。那么意味着 M[i]的类型是一个整形 int 在这个整形上面再取下标 不知道你要表达什么意思了。
[解决办法]
请看这两句的区别:
M=(int *)malloc(t*6*sizeof(int));
M=(double **)malloc(t*sizeof(double *));

读书人网 >C语言

热点推荐