error C2106: '=' : left operand must be l-value左值有关问题
error C2106: '=' : left operand must be l-value左值问题
这里有一小段代码,总是显示M[i][0]到M[i][5]不是左值,这是什么问题,XX[i],YY[i]都有定义
以上6行每行都会有不是左值的错误,还有error C2109: subscript requires array or pointer type,这又是什么意思。
之前我用的这个代码定义M就没有以上的错误,有什么区别啊
------解决方案--------------------
因为你第一个是一级指针。那么意味着 M[i]的类型是一个整形 int 在这个整形上面再取下标 不知道你要表达什么意思了。
------解决方案--------------------
请看这两句的区别:
M=(int *)malloc(t*6*sizeof(int));
M=(double **)malloc(t*sizeof(double *));
这里有一小段代码,总是显示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 *));