多维数组的定义、初始化、引用

多维数组的定义、初始化、引用,第1张

二维:数组内每个元素都是一维数组。
多维类似……

一、定义

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="< 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/728534.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)