二维数组
具有两个下标的数组
二维数组是具有两个下标的数组,对应于数学上的矩阵概念,可表示为二维矩形格。二维数组也用统一的数组名来标识,第一个下标表示行,第二个下标表示列。下标与一维数组一样都是从0开始。二维数组在内存中的存储形式有两种:以行序为主序和以列序为主序。以行序为主序的存储方式是按行存储,即按照第一行、第二行……第(R-1)行的顺序依次存储;以列序为主序的存储方式是按列存储,即按照第一列、第二列……第(C-1)列的顺序依次存储。存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节
概述
二维数组,每个元素的长度为t个字节,设为A的第一个元素,即二维数组的行下标从p到m,列下标从q到n,按“行优先顺序”存储时则元素的地址计算为:
按“列优先顺序”存储时,地址计算为:
存放该数组至少需要的单元数为 个字节
二维数组又称为矩阵,行列数相等的矩阵称变方阵。对称矩阵对角矩阵:n阶方阵的所有非零元素都集中在主对角线上。
基本运算算法
(1)转置矩阵://其中A, B是矩阵:
void tramat(基体 A,matrix B){ int i,j;
for(i=0; i\u003cm; i++)
for(j=0;j\u003cn;j++)
B[j]=A[j];
(2)矩阵相加://其中A,B,C是矩阵:
void addmat(matrix C, matrix A, matrix B){
int i, j;
for(i=0; i\u003cm; i++)
for(j=0;j\u003cn;j++)
c[j] = A[j] + B[j];
(3)矩阵相乘://其中A是矩阵,B是矩阵,C为矩阵
void mutmat(基体 C, matrix A, matrix B){
int i, j, k;
for(i=0; i\u003cm; i++)
for(j=0; j\u003ci; j++){
C[j]=0;
for(k=0; k\u003cn; k++)
;
定义
例如:
;
定义a为(3行4列)的数组,b为(5行10列)的数组。注意,不能写成
;
为便于理解特加入一个c语言程序及其运行结果:
运行结果为(为便于观看,整理成表格):
概念
C++动态二维数组:
以整形为例,row为行数,col为列数
int **数据;//存储二维数组的指针(指向指针的指针。的地址。这样标会更好。因为sizeof(date)结果为4不可能存下二维数组)
参考资料
数组.中国大百科全书.2024-03-19
目录
概述
概述
基本运算算法
定义
概念
参考资料