文章目录
一、多维数组做函数形参退化为指针过程
1、使用 int array[2][3] 作函数参数
2、使用 int array[][3] 作函数参数
3、使用 int (*array)[3] 作函数参数
一、多维数组做函数形参退化为指针过程
一维数组 作为 函数参数时 , 会退化为指针 ; 解决方案是 传入 数组首地址 和 数组元素个数 ;
如果 多维数组 作为 函数参数时 , 也存在退化问题 ;
1、使用 int array[2][3] 作函数参数
使用 int array[2][3] 作为函数参数 , 可以完整打印出二维数组中的值 ;
#include <stdio.h> #include <stdlib.h> #include <string.h> void print_array(int array[2][3]) { // 循环控制变量 int i = 0, j = 0; // 打印 二维数组 值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { printf("array[%d][%d] = %d\n", i, j, array[i][j]); } } } /** * @brief main * @return */ int main() { // 声明一个 二维数组 int array[2][3]; // 循环控制变量 int i = 0, j = 0; // 赋值时使用的索引值 int index = 0; // 为 二维数组 赋值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { array[i][j] = index++; } } // 打印二维数组值 print_array(array); // 命令行不要退出 system("pause"); return 0; }
执行结果 :
2、使用 int array[][3] 作函数参数
使用 int array[][3] 作为函数参数 , 可以完整打印出二维数组中的值 ;
#include <stdio.h> #include <stdlib.h> #include <string.h> void print_array(int array[][3]) { // 循环控制变量 int i = 0, j = 0; // 打印 二维数组 值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { printf("array[%d][%d] = %d\n", i, j, array[i][j]); } } } /** * @brief main * @return */ int main() { // 声明一个 二维数组 int array[2][3]; // 循环控制变量 int i = 0, j = 0; // 赋值时使用的索引值 int index = 0; // 为 二维数组 赋值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { array[i][j] = index++; } } // 打印二维数组值 print_array(array); // 命令行不要退出 system("pause"); return 0; }
执行结果 :
3、使用 int (*array)[3] 作函数参数
使用 int (*array)[3] 作为函数参数 , 可以完整打印出二维数组中的值 ;
#include <stdio.h> #include <stdlib.h> #include <string.h> void print_array(int (*array)[3]) { // 循环控制变量 int i = 0, j = 0; // 打印 二维数组 值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { printf("array[%d][%d] = %d\n", i, j, array[i][j]); } } } /** * @brief main * @return */ int main() { // 声明一个 二维数组 int array[2][3]; // 循环控制变量 int i = 0, j = 0; // 赋值时使用的索引值 int index = 0; // 为 二维数组 赋值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { array[i][j] = index++; } } // 打印二维数组值 print_array(array); // 命令行不要退出 system("pause"); return 0; }
执行结果 :