1、数组元素作为函数实参
int a[10];  //相当于定义了10个变量,a[0]~a[9],那么数组元素就是:a[0]~a[9],数组元素就可以当成变量使用。
#include<stdio.h>

//函数声明
int whichmax(int x,int y);
int main()
{int a[10];a[1]=5;a[4]=7;int tmpmax=whichmax(a[1],a[4]);  //将数组元素当成变量使用,来作为函数调用的实参,依旧是值传递printf("tmpmax=%d\n",tmpmax);return 0;
}
//函数定义
int whichmax(int x,int y)  //这里的x,y,在函数调用的时候,系统会自动给他们分配内存,在函数调用完毕之后,内存会回收。
{if(x>y)return x;return y;
}
2、数组名作为函数实参
实参和形参个数要相等,类型要一致,按顺序对应,一一传递。
C语言规定,实参变量对形参变量的数据传递是“值传递”,就是单向传递,只能由实参传递给形参,不能由形参传递给实参。
此外,数组名也可以作为函数实参,数组名代表的是数组首地址,当将数组名作为函数的实参时,传递的是数组的首地址。
此时,函数中的形参也应该用数组名字(也可以是数组指针)。
强调:数组名作为函数参数时,不是"值传递(值传递:形参是会分配内存的)"的概念,不是单向传递,而是把实参数组的开始地址传递给了形参数组(不分配内存,直接使用实参的内存地址)。
这样两个数组就会共同占用一段内存,其实叫地址传递,也就是说,形参数组中各个元素的值如果发生了变化,会导致实参数组元素的值也发生相应改变,这就是与变量做函数参数明显不同的。
#include<stdio.h>
//函数定义在前面,就可以不用声明
void changevalue(int ba[5])  //这里 可以是ba[5],也可以是ba[] 形参数组的大小可以不指定,即使指定了也可以与实参数组大小不一                                 致,因为C编译器对形参数组的大小不做检查,只是将实参数组的首地址传递给形参数组。//如果是 ba[9] 这里系统是没有分配内存的,ba[5]不属于a[5],非要往这里写入内容,很可能会导致崩                                   溃;因为a[5]传过来只有a[0]-a[4] 这五个内存地址,系统并没有分配9个内存地址
{ba[3]=27;   //这就是给内存赋值,所以这个值会带回给调用者ba[4]=45;return;
}
int main()
{int a[5];  //能引用的是a[0]--a[4]a[0]=85;a[1]=70;a[2]=98;a[3]=92;a[4]=78;changevalue(a);   //使用数组名作为实参for(int i=0;i<5;i++){printf("a[%d]=%d\n",i,a[i]);}return 0;
}
把实参数组的开始地址传递给了形参数组(不分配内存,直接使用实参的内存地址)这样两个数组就会共同占用一段内存,其实叫地址传递
说明:
1、如果实参为数组名,则形参也为数组名;
2、形参数组与实参数组类型要一致,比如:都为int型,否则会出现意想不到的错误。
3、形参数组的大小可以不指定,即使指定了也可以与实参数组大小不一致,因为C编译器对形参数组的大小不做检查,只是将实参数组的首地址传递给形参数组。
3、用多维数组作为函数实参
可以用多维数组名作为形参和实参,形参数组在定义时,可以指定每一维的大小,也可以忽略第一维大小,但不能省略第二维大小。
实参是这些行这些列,形参就尽量跟实参一样(也是这些行,这些列),这样实参能引用的下标和形参一样可以引用,就会保证你不出错。
#include<stdio.h>
//函数定义在前面,就可以不用声明
void changevalue(int b[5][8])   //这里 5可以省略,但是 8不可以省略
{b[0][2]=15;  //实参里面能引用的下标,形参里面也可以引用return;
}
int main()
{int a[5][8];  //能引用的是a[0]--a[4]a[0][2]=3;changevalue(a);   //使用数组名作为实参printf("a[0][2]=%d\n",a[0][2]);return 0;
}

C语言 数组作为函数参数相关推荐

  1. 四十七.c语言数组作为函数参数

    47.数组作为函数参数 变量可以当作参数,这里的数组也可以当作函数的参数. 数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数: 1.整个数组当作函数参数,即把数组名称传入函数中 ...

  2. C语言数组作为函数参数

    一:数组元素作为函数的实参 数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递. #include <stdio.h> float max(float x,flo ...

  3. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  4. C语言多维数组做函数参数技术推演

    多维数组做函数参数技术 C语言中只会以机械式的值拷贝的方式传递参数(实参把值传给形参) 二维数组参数同样存在退化的问题 等价关系 C语言中只会以机械式的值拷贝的方式传递参数(实参把值传给形参) int ...

  5. 【C语言进阶深度学习记录】三十一 数组作为函数参数时退化为指针

    之前的学习数组的文章中,已经知道一维数组作为函数参数的时候,最终会被编译器编译为指针.今天来看看二维数组的情形 文章目录 1 为什么C语言中的数组作为函数参数会退化为指针? 2 二维数组作为函数参数如 ...

  6. c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)

    c语言自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数) 程序流程图: 代码: #include<stdio.h> char strupr(char ch[ ...

  7. C语言 二维数组作为函数参数的4种方式

    前言 多维数组中,二维数组是最常用的一种.在C语言编程中,二维数组的定义.取值以及赋值都比较容易,与一维数组类似.然而,在将二维数组作为函数参数传递时,参数结构较复杂,难以理解.本文章是实用型文章,注 ...

  8. C语言 | 二维数组作为函数参数

    1024G 嵌入式资源大放送!包括但不限于C/C++.单片机.Linux等.关注微信公众号[嵌入式大杂烩],回复1024,即可免费获取! 偶然间发现C语言二维数组作为函数的参数是个比较容易出错的问题. ...

  9. c语言以数组作为函数参数,C语言将数组作为函数参数

    一个函数的形参是普通的局部变量.当发生函数调用时,程序创建这些形参,然后用对应的实参来初始化这些形参.形参的作用域就是函数块.函数内可以改变形参的值,而不会影响调用上下文中实参的值. 如果需要将一个数 ...

最新文章

  1. Win32API 窗口程序的创建7大步骤
  2. Python-EEG工具库MNE中文教程(8)-参考电极简介
  3. html获取xml分页,JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
  4. Requests库网络爬虫实战
  5. uos安装方法_国产UOS(统一操作系统),虚拟机安装体验
  6. 面试官:Spring代理目标bean时为何通过TargetSource类型对目标bean封装?
  7. JavaScript学习(六十五)—数组知识点总结
  8. Web API-排他思想及其案例
  9. c语言谭浩强第五版复习梳理1
  10. OpenCV使能CUDA加速
  11. VMware Tools安装
  12. uva10099+uvauva10048
  13. 【Android初学者】UI组件 介绍
  14. OpenCV-Python 直方图-4:直方图反投影 | 二十九
  15. 中国极地考察船“雪龙”号在南极碰撞冰山 目前人船安全
  16. 对于大数据、人工智能时代,我们应该如何面对?
  17. 我为什么选择Go语言(Golang)
  18. 如何打通企业数据,实现数智化转型
  19. Red Hat Enterprise Linux (RHEL) 8.5 发布(含下载)
  20. 单片微型计算机原理及应用实验报告,小学期单片机实验报告_相关文章专题_写写帮文库...

热门文章

  1. oneno浏览器插件_三款好用的浏览器插件,附带浏览器插件安装方法
  2. 分清ul和li的边界
  3. 百度AI-7Days-打卡集训营总结
  4. 详细实例:用python爬虫爬取幽默笑话网站!(建议收藏)
  5. 钢绞线弹性模量怎么计算_预应力钢绞线的弹性模量概念及计算方法 - 新闻中心 - 湖南汇赢钢铁科技公司...
  6. 3.02 进程状态转换图
  7. 使内部窗体靠右悬停java_java如何把窗体嵌入桌面底层,即使是桌面图标也在它的上面?...
  8. 在pytorch环境中调用SRU模块时出现的问题及解决方法
  9. 李笑来激起千层浪,赵姐夫力拒众强敌
  10. 如何模拟手机访问浏览器