文章目录

  • 一、多维数组做函数形参退化为指针过程
    • 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;
}

执行结果 :

【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )相关推荐

  1. c语言函数变量地址符,C语言中取地址符做函数形参?—— 引用的讨论

    取地址符&做函数形参? C语言强大且危险 引入 这个问题花去了整整一天的研究. 先看一段严蔚敏的<数据结构>中栈的例程: 这里面的&S第一遍看的时候想当然的认为是取了SqS ...

  2. Day17 指针变量做函数形参 指针函数 函数指针

    1. 指针变量做函数形参 1.1指针变量做一维数组形参 首先先了解如何定义一个一维数组指针 int arr[5] = {1, 2, 3, 4, 5};//定义一个一维数组 int *parr = ar ...

  3. C语言多维数组做函数参数退化原因大剖析

    多维数组做函数参数退化原因 多维数组做函数参数退化原因大剖析 多维数组做函数参数退化原因大剖析 //证明一下多维数组的线性存储 //线性打印 void printfArray411(int *arra ...

  4. C语言多维数组做函数参数会退化,数组做函数参数退化问题

    一.数组做函数参数退化问题 数组做函数参数时,会退化为指针. 1.把数组的内存首地址和数组的有效长度传入函数. 2.实参数组和函数参数数组的数据类型不一样.形参中的数组,编译器会把它当做一个指针处理, ...

  5. c语言调用二维数组作为函数参数传递,C++ 二维数组作为形参传递使用实例

    在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { for(int i= ...

  6. C语言反汇编 - 多维数组与指针

    反汇编(Disassembly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解.外挂技术.病毒分析.逆向工程.软件汉化等领域,学习和理解反汇编对软件调试.系统漏洞挖掘.内核原理及理解高 ...

  7. c语言用二维数组打印空心菱形,java杨辉三角和空心菱形(二维数组篇)

    一.杨辉三角 import java.util.Scanner; //导入包 public class Test7 { public static void main(String[]args){ S ...

  8. C语言汇总学生成绩,c语言用二维数组统计学生成绩.doc

    c语言用二维数组统计学生成绩 # include /*定义一个求每门课平均成绩的函数AverageCourse 它的形参一个是二维数组,用来传递学生成绩: 一个是指针变量(数组名),存放每门课的平均成 ...

  9. C语言求二维数组平均数,一道JavaScript的二维数组求平均数的题

    JavaScript中只支持一维数组,但是可以在数组中嵌套数组来创建二维以至于多维的数组.今天下午在看书时候,发现一道感觉比较有意思的题,就是js中如何求二维数组的列之和和行之和,现在就给大家分享下, ...

最新文章

  1. Radio Button无法对应选择的踩坑实例
  2. Codeforces 771C
  3. String类中的equals方法与Object类中的equals方法的不同点
  4. Spark广播变量实现原理及基础编程
  5. 设置网页背景图片不显示
  6. 定量库存控制模型_经济订货批量不是最终的订货批量,计算订货批量的最高库存定量法...
  7. 使用 PlantUML 绘制时序图
  8. C语言中函数中传入一个数组,并且返回一个数组
  9. 初学Rman 写的备份脚本
  10. java代码混淆,程序加密推荐 java授权 支持JDK16
  11. 学校计算机考证要交费吗,大家好,请问技校考证要交几百元费用是否可以?
  12. 吴伯凡-认知方法论-真真切切的感觉
  13. python字典get用法_详细解析python字典get()实例教程
  14. C#的get和set用法
  15. 程序员如何利用技术变现?
  16. 360众测重装上阵,创新服务模式重塑众测新业态
  17. JavaScript实现注册页面的表单验证
  18. 数据科学中的计量经济学技术
  19. python 百度搜索结果 浏览器 和终端不一致_python自动爬取百度搜索结果
  20. [Linux驱动炼成记] 11-快速修改芯片驱动中寄存器的值

热门文章

  1. 黑马vue---10-11、Vue实现跑马灯效果
  2. g711u与g729比较编码格式
  3. 蒙版遮住全屏(包括导航栏)
  4. jquery 3D分页翻转滑块
  5. 如何在64位win7下通过ODAC来访问Oracle服务器
  6. 【转】调试JavaScript 错误的解决方案
  7. POJ3693 Maximum repetition substring
  8. 【踩坑】遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 报错...
  9. Python进程学习笔记-进程创建fork
  10. 使用freemarker生成java文件(其他文件也可以)