C++ 指向二维数组的指针
如何让指针分配二维数组 下面的代码不起作用C++ 指向二维数组的指针,c++,arrays,pointers,multidimensional-array,C++,Arrays,Pointers,Multidimensional Array,如何让指针分配二维数组 下面的代码不起作用 float a1[2][2] = { {0,1},{2,3}}; float a2[3][2] = { {0,1},{2,3},{4,5}}; float a3[4][2] = { {0,1},{2,3},{4,5},{6,7}}; float** b = (float**)a1; //float** b = (float**)a2; //float** b = (float**)a3; cout << b[0][0] <<
float a1[2][2] = { {0,1},{2,3}};
float a2[3][2] = { {0,1},{2,3},{4,5}};
float a3[4][2] = { {0,1},{2,3},{4,5},{6,7}};
float** b = (float**)a1;
//float** b = (float**)a2;
//float** b = (float**)a3;
cout << b[0][0] << b[0][1] << b[1][0] << b[1][1] << endl;
float a1[2][2]={{0,1},{2,3};
浮点a2[3][2]={{0,1},{2,3},{4,5};
浮点a3[4][2]={{0,1}、{2,3}、{4,5}、{6,7};
浮动**b=(浮动**)a1;
//浮动**b=(浮动**)a2;
//浮动**b=(浮动**)a3;
在C++中,你这样做的方式不是合法的。你需要有一组指针。 你做这件事的方式在C++中不是合法的。您需要有一个指针数组。这里的问题是编译器不知道b的维度。将a1强制转换为浮点**时,信息将丢失。转换本身仍然有效,但不能使用b[][]引用数组。这里的问题是编译器不知道b的维度。将a1强制转换为浮点**时,信息将丢失。转换本身仍然有效,但不能使用b[][]引用数组。a1
不能转换为float**
。所以你所做的是违法的,不会产生预期的结果
试试这个:
float (*b)[2] = a1;
cout << b[0][0] << b[0][1] << b[1][0] << b[1][1] << endl;
float(*b)[2]=a1;
couta1
不能转换为float**
。所以你所做的是违法的,不会产生预期的结果
试试这个:
float (*b)[2] = a1;
cout << b[0][0] << b[0][1] << b[1][0] << b[1][1] << endl;
float(*b)[2]=a1;
cout您可以明确地执行此操作:
float a1[2][2] = { {0,1},{2,3}};
float* fp[2] = { a1[0], a1[1] };
// Or
float (*fp)[2] = a1;
您可以明确地执行此操作:
float a1[2][2] = { {0,1},{2,3}};
float* fp[2] = { a1[0], a1[1] };
// Or
float (*fp)[2] = a1;
尝试将b直接指定为等于a1,这意味着指针b指向的内存位置与指针a1指向的内存位置相同,它们现在具有相同的内存引用,您应该能够遍历数组。尝试将b直接指定为等于a1,这意味着指针b指向的内存位置与指针a1指向的内存位置相同,它们现在具有相同的内存引用,您应该能够遍历数组。如果所有数组都具有最终维度2(如示例中所示),那么您可以这样做
float (*b)[2] = a1; // Or a2 or a3
如果所有数组都有最终维度2(如示例中所示),那么您可以这样做
float (*b)[2] = a1; // Or a2 or a3
+1我相信这就是为什么不能在浮点**上使用数组索引的原因。+1我相信这就是为什么不能在浮点**上使用数组索引的原因。