1、二维数组:二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。一维数组的每一空间里存储的又是另外一个一维数组的首地址,这样构成的一个类似于矩形的存储空间便是二维数组。
2、在这里用动态和静态两种空间分配方案来定义和初始化二维数组。
3、矩阵相乘图示:

4、代码:
#include <stdio.h>
#include <stdlib.h>
#define ROWS 4
#define COLUMNS 5
//二维数组 (动态)
typedef struct TwoDArray{
int rows;//行
int columns;//列
int** elements;
} TwoDArray, *TwoDArrayPtr;
//(静态)
typedef struct TwoDStaticArray{
int rows;
int columns;
int elements[ROWS][COLUMNS];
} TwoDStaticArray, *TwoDStaticArrayPtr;
//二维数组(动态)的初始化
TwoDArrayPtr initTwoDArray(int paraRows, int paraColumns){
int i;
TwoDArrayPtr resultPtr = (TwoDArrayPtr)malloc(sizeof(struct TwoDArray));
resultPtr->rows = paraRows;
resultPtr->columns = paraColumns;
resultPtr->elements = (int**)malloc(paraRows * sizeof(int*));
for (i = 0; i < paraRows; i ++){
resultPtr->elements[i] = (int*)malloc(paraColumns * sizeof(int));
}
return resultPtr;
}
//初始化二维数组(静态)并打印地址
TwoDStaticArrayPtr initTwoDStaticArray(){
int i, j;
TwoDStaticArrayPtr resultPtr = (TwoDStaticArrayPtr)malloc(sizeof(struct TwoDStaticArray));
resultPtr->rows = ROWS;
resultPtr->columns = COLUMNS;
for (i = 0; i < ROWS

这篇博客介绍了如何在C语言中使用动态和静态内存分配方案定义二维数组,并实现了矩阵相乘的功能。动态二维数组通过结构体封装,静态二维数组直接在栈上分配。代码中包含了初始化、随机赋值、打印数组和矩阵相乘的函数,并提供了测试案例。
最低0.47元/天 解锁文章
336

被折叠的 条评论
为什么被折叠?



