C++ 长双二维动态数组c++;
错误:数组下标的类型“long double**[long double]”无效C++ 长双二维动态数组c++;,c++,compiler-errors,double,dynamic-arrays,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*si
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 double**make2darray(long int V)
{
长双**阵列2,i;
array2=(长双*)malloc(V*sizeof(长双*);
对于(i=0;i数组中的索引必须始终具有整数类型,您需要将声明更改为:
long double **array2;
size_t i;
C11标准(N1570)
6.5.2.1数组订阅(禁制)
其中一个表达式的类型应为“指向完整对象类型的指针”,另一个表达式的类型应为
表达式应为整数类型,结果的类型为“type”
<>也可在C++中使用<代码> STD::向量或<代码> STD::数组< /COD>分别为可变长度数组或< P> > P>参见行< /P>
long double **array2,i;
您的变量i
的类型为long double。浮点变量不能用于数组下标
使用此代码
long double **array2;
size_t i;
为什么在C++中使用<代码> MalCal< /Cord>?为什么不使用<代码> STD::vector < /代码>?同样,数组索引必须是一个整数类型,所以使<代码> i < />代码>代码>长int < /> >匹配<代码> v(这就是错误信息告诉你的)你写的数据类型——我猜你不知道你在这里做什么。在C++中,在初始化之前声明变量是最坏的风格。尤其对于<>代码> 循环,你应该考虑在最窄的范围内声明索引变量<代码> i>代码>:(int i=0;i+1数组中的索引必须始终具有整型
。我以前没有尝试过这一点,令人惊讶!对于任何古代版本的C也是如此吗?@Wolf我不能代表古代C,但是现代C11标准明确规定其中一个表达式应具有指向完整对象类型的类型指针,另一个表达式是n应为整数类型,结果为typetype
。C标准非常模糊。“其中一个表达式…”允许使用像2[array2]这样奇怪的语句。