原创力文档c语言程序设计第五章,C语言程序设计__第5章课件.ppt

C语言程序设计__第5章课件.ppt

5.4 函数与数组 5.4.1  函数与一维数组   2. 数组名作实、形参    在一维数组中,用“数组名[下标]”表示的数组元素相当于一个普通变量;而不带下标的数组名代表一批变量,也可以把它看成一个特殊的变量,因为它存放该数组的首地址(即数组第一个元素的地址)。 在函数中,直接用数组名作参数时,则传送的是地址值,即把实参数组的首地址传递给形参数组,而不是将全部数组元素都复制到函数中去。地址传递后,实参、形参数组共享相同的内存单元,也就是说形参数组和实参数组其实就是同一个数组。 5.4 函数与数组 5.4.1  函数与一维数组   2. 数组名作实、形参    例5.6 有一个一维数组score,存放一个学生6门课程的成绩,求平均成绩。 #include float average(array) float array[ ]; /*形参数组名为array*/ {int i; float aver, sum=array[0]; for (i=1; i<6; i++) sum=sum+array[i]; aver=sum/6; return(aver); } main( ) { float score[6], aver; int i; printf("请输入一学生6门课程的成绩:\n"); for (i=0;i<6; i++) scanf("%f", &score[i]); aver=average(score); /*实参数组名score用作函数average的实参*/ printf("该学生的平均成绩是:%5.2f", aver); } 5.4 函数与数组 5.4.1  函数与一维数组   2. 数组名作实、形参    在本例中,实参数组名为score,形参数组名为array。在主程序的函数调用(average(score))时,实参数组score[6]通过数组名score把首地址传给array后,则array和score共享实参数组所占用的内存空间,也就是说形参数组array和实参数组score其实就是同一个数组,只不过是有两个名字而已,如图5.11所示。 5.4 函数与数组 5.4.1  函数与一维数组   2. 数组名作实、形参    注意: C编译系统对形参数组大小不作检查,因此形参数组可以不指定大小,在数组名后跟一对空的方括号即可,而其大小由相应的实参数组决定。 在调用时将实参数组的首地址传到形参数组名,也就是说,形参数组并不在内存中重新申请数组的空间,而是和实参数组共享存储单元。 实参数组和形参数组类型应保持一致。如在上例中,实参数组score和形参数组array的元素类型都为float类型。 5.4 函数与数组 5.4.1  函数与一维数组   3. 函数与一维字符数组综合示例    例5.7 从键盘输入一字符串,判断字符串长度并输出(不用strlen( )函数) #include int strlength(char str[ ] )   /*求字符串长度的函数*/ {int i=0; while (str[i]!=‘\0’)  i++; return i; } main( ) {char s[100]; printf("请输入一字符串:"); gets(s); printf("您输入的字符串的长度为:%d\n", strlength (s) ); } 5.4 函数与数组 5.4.1  函数与一维数组   重点小结:   本节在分析函数调用过程的参数传递问题时,特别强调要搞清楚实参向形参传递的是“值”还是“地址”?严格说来,“地址”也是值(地址值),但它们有一个显著的区别: “值传递”在实参将“值”传递给形参后,对形参的修改不会影响到对应的实参。这可以理解为实参和形参各自占用不同的存储空间,实参在将“值”传递给形参后,二者就脱离关系了; “地址传递”在实参将“地址”值传递给形参后,形参就和实参共享同一地址单元,而不另外分配存储空间。这可以理解为形参名和实参名只是同一存储单元的两个不同引用名而已,因而对形参的修改就相当于是对实参的修改。 5.4 函数与数组 5.4.2  函数与二维数组   二维数组元素:与相同类型的简单变量地位完全一样。因此,数组元素作函数参数也和简单变量一样,也是值的单向传递。但要注意:二维数组元素在引用时其下标个数为2。 二维数组名:在二维数组中,没有下标的数组名也可以看成一个特殊变量,存放该二维数组第一个元素的地址。在函数中,若直接用二维数组名作参数,则传送的也是地址值,即将实参数组的首地址传递给形参数组,结果是:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值