指向二维数组C ++的指针数组

时间:2015-11-27 15:57:09

标签: c++ arrays pointers

所以我有10个二维chars数组,我需要创建一个指向这些二维数组的指针数组,然后我需要打印这些二维数组。 到目前为止,我已经完成了这个:(我已经声明了数组)

char(*s1)[9][15] = &p1;
char(*s2)[9][15] = &p2;
char(*s3)[9][15] = &p3;
char(*s4)[9][15] = &p4;
char(*s5)[9][15] = &p5;
char(*s6)[9][15] = &p6;
char(*s7)[9][15] = &p7;
char(*s8)[9][15] = &p8;
char(*s9)[9][15] = &p9;
char(*s10)[9][15] = &p10;

char *pointers[10] = {s1,s2,s3,s4,s5,s6,s7,s8,s9,s10};

for(int i = 0; i < 9; i++){
   for(int j = 0; j < 15; j++){
      cout << [0][i][j]; // this is just for the first two-dimensional array
   }
}

所以这不会打印出应该的数组。我能做什么?请帮忙。

1 个答案:

答案 0 :(得分:-1)

  1. 更正pointers的类型。
  2. 获取指向数组的指针,取消引用以获取数组,然后访问数组。
  3. 试试这个:

    #include <iostream>
    using std::cout;
    #define array(x) char x[9][15] = {};for(int i=0;i<9;i++)for(int j=0;j<9;j++)x[i][j]='!'+i+j;
    
    int main(void) {
        array(p1)
        array(p2)
        array(p3)
        array(p4)
        array(p5)
        array(p6)
        array(p7)
        array(p8)
        array(p9)
        array(p10)
    
        char(*s1)[9][15] = &p1;
        char(*s2)[9][15] = &p2;
        char(*s3)[9][15] = &p3;
        char(*s4)[9][15] = &p4;
        char(*s5)[9][15] = &p5;
        char(*s6)[9][15] = &p6;
        char(*s7)[9][15] = &p7;
        char(*s8)[9][15] = &p8;
        char(*s9)[9][15] = &p9;
        char(*s10)[9][15] = &p10;
    
        char (*pointers[10])[9][15] = {s1,s2,s3,s4,s5,s6,s7,s8,s9,s10};
    
        for(int i = 0; i < 9; i++){
           for(int j = 0; j < 15; j++){
              cout << (*pointers[0])[i][j]; // this is just for the first two-dimensional array
           }
        }
    
        return 0;
    }