从3D阵列到1D阵​​列的转换失败

时间:2017-01-12 15:31:34

标签: c++ pointers multidimensional-array

以下程序借助指针将3D数组转换为1D数组。一些转换错误即将到来。错误发生的行包含赋值运算符,指向两侧指向int类型的指针。

#include<iostream>
using namespace std ;
int main()
{
// REPLACING 3D ARRAY WITH A 2D ARRAY AND THEN INTO A 1D ARRAY USING               POINTERS  .  
int abc [2][2][3] ;
int **p[3][2] ;
int *c[6] ;
//          // abc gives address of first element of 3d array ie first 2d   array .

// abc是指向指向int类型的指针的指针。

int i , j ;     // * abc represents address of first 1d array of first 2d array .
for (i=0 ; i<=2 ; i++) // *abc +1:address of second 1d array of first 2d 
{                            // array .
for (j=0 ; j<=1 ; j++)
{
p[i][j] =  *(abc+i )  + j ; // conversion error comes here.

} 
}

for (i=0 ; i<=5 ; i++) 
{
for (j=0 ; j<=1 ; j++ )     
{
c[i] = *p[i][j] ;   
}

}

// entering array elements .
for (i=0 ; i<=5 ; i++)
{
cin>>* c[i] ;   

}

// required array elements .
for (i=0 ;i<=5 ;i++)
{
cout<<*c[i]<<"    "; // 3d array elements are accessed using 1d array  
}                                                        // of pointers .
}

1 个答案:

答案 0 :(得分:2)

一种方法是使用嵌套的apt-get install libcurl4-openssl-dev 循环。

验证您的1D阵列是否足够大以包含3D插槽

for

注意:在上面的例子中没有指针也没有受到伤害。