创建空间大小固定的数组
# 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][]);
网友评论