【C语言】二维数组:定义与传参

1、定义二维数组

1.1 直接定义:int a[1001][2]

复制代码
int array[1001][2];

1.2 使用普通数组的指针

复制代码
int (*array)[2]; // 定义一个指向有两个元素的数组的指针
array = malloc(1001 * sizeof(int[2])); // 动态分配大小为[1001][2]的内存

1.3 使用双重指针

复制代码
int **array; // 定义一个二级指针
array = malloc(1001 * sizeof(int *)); // 为每一行分配指针
for (int i = 0; i < 1001; i++) {
    array[i] = malloc(2 * sizeof(int)); // 为每一行的列分配内存
}

2、二维数组传参

2.1 固定大小的二维数组作为参数

复制代码
void myFunction(int array[1001][2]) {
    // 处理二维数组
}

void myFunction(int array[][2]) {
    // 处理二维数组
}

int array[1001][2];
myFunction(array); // 传递二维数组

2.2 使用指向数组的指针作为参数

复制代码
void myFunction(int (*array)[2]) {
    // 处理二维数组
}

int array[1001][2];
myFunction(array); // 传递二维数组
相关推荐
Felven4 小时前
C. Basketball Exercise
c语言·开发语言
可乐鸡翅好好吃4 小时前
通过BUG(prvIdleTask、pxTasksWaitingTerminatio不断跳转问题)了解空闲函数(prvIdleTask)和TCB
c语言·stm32·单片机·嵌入式硬件·bug·keil
才鲸嵌入式5 小时前
01 Ubuntu20.04下编译QEMU8.2.4,交叉编译32位ARM程序,运行ARM程序的方法
linux·c语言·单片机·嵌入式·arm·qemu·虚拟机
int型码农11 小时前
数据结构第八章(二)-交换排序
c语言·数据结构·算法·排序算法
jz_ddk16 小时前
[zynq] Zynq Linux 环境下 AXI BRAM 控制器驱动方法详解(代码示例)
linux·运维·c语言·网络·嵌入式硬件
Magnum Lehar16 小时前
vulkan游戏引擎启动环境配置1
c语言
待什么青丝17 小时前
【TMS570LC4357】之相关驱动开发学习记录1
c语言·arm开发·驱动开发·学习
C_Liu_17 小时前
C语言:数据在内存中的存储
c语言·开发语言
ZZSCH1 天前
哈工大计统大作业-程序人生
c语言