C++ 中二维数组的使用

参考链接

创建空间大小固定的数组

# define N 16
int a[N][N];
int b[7][7]; //中括号内应该为常量。
const int n =9;
int c[n][n]; //n被声明为常量
//没有任何初始化下,该变量值是任意值
int c[n][n]={};
或者
int c[n][n]={0};
//这两种情况所有的元素都内初始化为0

创建动态二维数组

    int **p = new int *[N];//创建过程
    for (i = 0; i < N; i++)
        p[i] = new int[N];
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
        {
            p[i][j] = 0;
            cout << p[i][j] << endl;
        }
    for (i = 0; i < N; i++) //释放过程
        delete [] p[i];
    delete[] p;

这个过程的思想是,将二维数组看成是一个数据类型为int * 的一维数组p[i]相当于数组名,然后int * 指向一个数据类型为int的一维数组p[i][j]。

利用vector数组

#include<vector>
vector<vector <int>> v(3,vector<int>(3));//将vector数组初始化为3*3的矩阵

二维数组参数传递

规定:如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明述数组的列数,数组的行数没有太大的关系,可以指定也可以不指定。因为函数调用时传递的是一个指针,它指向由行向量构成的一维数组。

  • void func(int array[3][10]);
  • void func(int array[][10]);
  • void func(int (* array)[10]); //表明指向具有10个元素的一维数组。
    ( * array)必须用括号括起来
    否则,意义发生变化:
  • voidfunc(int * array[10]) //一个数组array有10个元素,每个元素的类型是int *

若将列数省略,系统无法决定多少行多少列。下面表示的定义都是不合法的

  • void func(int array[][]);
  • void func(int array[3][]);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容