二维:数组内每个元素都是一维数组。
多维类似……
C++允许定义多维数组,其定义形式为:
元素类型 数组名 [常量表达式1][常量表达式2] …[常量表达式n]int A[3][4]; //定义二维数组
int B[3][4][5]; //定义三维数组
int C[3,4,5,6]; //错误!
►多维定义实际上是反复递归一维定义:即一维数组的每一个元素又是一个一维数组,就构成了二维数组。
►本质上,C++的多维数组都是一维数组,这是由内存形式的线性排 列决定的。因此,不能按几何中的概念来理解多维,多维数组不过 是借用“维”的数学说法表示连续内存单元。
二、初始化
►可以在多维数组定义时对它进行初始化,这里以二维数组来说明, 初始化有两种形式。
(1)初值按多维形式给出:
元素类型 数组名 [常量表达式1] [常量表达式2] ={{初值列表 1},{初值列表2},...};int A[2][3]={ {1,2,3},{4,5,6}};//初值按二维形式
(2)初值按一维形式给出:
元素类型 数组名 [常量表达式1] [常量表达式2] ={初值列表};int A[2][3]={ 1,2,3,4,5,6 };//初值按一维形式
►初值列表提供的元素个数不能超过数组长度,但可以小于数组长度。 如果初值个数小于数组长度,则只初始化前面的数组元素;剩余元 素初始化为0。这个规则两种初始化形式都适用,例如:
//只对每行的前若干个元素赋初值
int A[3][4]={{1},{1,2},{1,2,3}};
//一维形式部分元素赋初值
int A[3][4]={1,2,3,4,5};
►在提供了初值列表的前提下,多维数组定义时可以不用指定第1维 的数组长度,但其余维的长度必须指定,编译器会根据列出的元素 个数自动确定第1维的长度。例如:
int A[][2][3]={1,2,3,4,5,6,7,8,9,10,11,12};
//正确
int B[2][][3]={1,2,3,4,5,6,7,8,9,10,11,12};
//错误,只能省略第1维
int C[2][2][]={1,2,3,4,5,6,7,8,9,10,11,12};
//错误,只能省略第1维
三、引用
►多维数组元素的引用与一维类似,也只能逐个引用数组元素的值而 不能一次引用整个数组,引用的一般形式为:
数组名 [下标表达式1] [下标表达式2] …[下标表达式n];int b[3][4], i, j, sum=0;
b[0][0]=10;
b[1][2]=b[0][0]+10;
b[2-1][2*2-1]= 5
int A[3][4]={1,2,3},x;
x = A[0][1]; //x=2
A[2][2] = 50; //则数组A变为
如:
给二维数组输入数据,并以行列形式输出。
#include
using namespace std;
int main()
{
int A[3][4],i,j;
for (i=0;i<3;i++)
for (j=0;j<4;j++) cin >> A[i][j];
for (i=0;i<3;i++) {
for (j=0;j<4;j++) //内循环输出一行
cout<
求矩阵的转置矩阵。
#include
using namespace std;
int main()
{
int A[2][3]={{1,2,3},{4,5,6}},AT[3][2], i, j;
for (i=0; i<2; i++) //求矩阵A的转置
for(j=0;j<3;j++) AT[j][i]=A[i][j];
cout<<"A="<
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)