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

An array of pointers to two dimensional arrays C++

本文关键字:指针 数组 C++ 二维数组      更新时间:2023-10-16

所以我有10个二维字符数组,我需要制作一个指向这些二维数组的指针数组,然后我需要打印这些二维数组。到目前为止,我已经这样做了:(我已经声明了阵列)

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. 更正pointers的类型
  2. 获取指向数组的指针,取消引用以获取数组,然后访问数组

试试这个:

#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;
}