long double 2d动态数组c ++

时间:2014-06-30 12:21:24

标签: c++ compiler-errors double dynamic-arrays

错误:数组下标无效类型'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动态长双数阵有什么问题吗?

2 个答案:

答案 0 :(得分:3)

数组中的索引必须始终具有整数类型,您需要将声明更改为:

long double **array2;
size_t i;

C11标准(N1570)

  

6.5.2.1 数组下标(约束)

     
      
  1. 其中一个表达式的类型''指向完整的对象类型'',另一个   expression应具有整数类型,结果类型为''type''。
  2.   

同样在C ++中,最好分别对变量或常量长度数组使用std::vectorstd::array

答案 1 :(得分:1)

见行

long double **array2,i;

您的变量i的类型为long double。浮点变量不能用于数组下标。

使用此代码

long double **array2;
size_t i;