错误:数组下标无效类型'long double ** [long double]'
long double** make2darray(long int V)
{
long double **array2,i;
array2 = (long double**) malloc (V*sizeof(long double*));
for(i=0;i<V;i++)
{
array2[i] = (long double*) malloc (V*sizeof(long double));
}
return array2;
}
但是,如果我将数据类型更改为long int,它是否完美?不明白用这种方式制作2d动态长双数阵有什么问题吗?
答案 0 :(得分:3)
数组中的索引必须始终具有整数类型,您需要将声明更改为:
long double **array2;
size_t i;
C11标准(N1570)
6.5.2.1 数组下标(约束)
- 其中一个表达式的类型''指向完整的对象类型'',另一个 expression应具有整数类型,结果类型为''type''。
醇>
同样在C ++中,最好分别对变量或常量长度数组使用std::vector
或std::array
答案 1 :(得分:1)
见行
long double **array2,i;
您的变量i
的类型为long double。浮点变量不能用于数组下标。
使用此代码
long double **array2;
size_t i;