C语言学习笔记day14—定义带形式参数的函数与声明带形式参数的原型、调用带实际参数的函数以及黑盒视角

今天是发博第二周,也是系统性学习C的第二周,奖励自己肝多几页c primer plus😍

定义带形式参数的函数

函数定义从下面的ANSI C风格的函数头开始:

void show_n_char(char ch, int num)

  • 分析:该行告诉编译器show_n_char()使用两个参数ch和num,且ch是char类型,num是int类型。像这样的两个变量被称为形式参数,简称形参。和定义在函数中的变量一样,形式参数也是局部变量,为该函数私有,也就是说在其他函数中使用同名变量不会引起名称冲突。每次调用函数都会给这些变量赋值。
  • 注意:ANSI C要求在每个变量前都声明其类型。也就是说,不能像普通变量声明一样使用同一类型变量列表,例如:

void dibs (int x,y,z)        /*无效的函数头*/

void dibs (int x,int y,int z)/*有效*/

虽然show_n_char()接受来自main()的值,但是它没有返回值。因此,show_n_char()的类型是void

声明带形式参数函数的原型

在使用函数之前,要先用ANSI C形式声明函数原型,例如

void show_n_char(char ch, int num);

当函数接受参数时,函数原型用逗号分隔开的列表指明参数的数量和类型。根据个人喜好,你也可以省略变量名:

void show_n_char(char,int)

在原型中使用变量名并没有实际创建变量,char仅代表了一个char类型的变量,以此类推。

调用带实际参数的函数

在函数调用中,实际参数(简称实参)提供了ch和num的值。

show_n_char(SPACE,12);

实际参数是空格符号(#define SPACE ' ')和12。这两个值被赋给show_n_char()中的相应的形式参数:变量ch和num。简而言之,形式参数是被调函数中的变量,实际参数是主调函数赋给被调函数的具体值。如上列所示,实际参数可以是常量、变量,甚至是更复杂的表达式。无论实际参数是何种形式都要被求值,然后该值被拷贝给被调函数相应的形式参数。例如:

show_n_char(SPACE, (WIDTH - strlen(PALCE))/2

构成该函数的第2个实际参数是一个很长的表达式,对高表达式求值为10。然后10被赋给变量num。

强调:实际参数是具体的值,该值要被赋给作为形式参数的变量(如下图)。


611de0b5c72f429bbf554bac46b769a7.jpg


 因为被调函数使用的值是从主调函数中拷贝而来,所以无论被调函数对拷贝数据进行什么操作,都不会影响主调函数中的原始数据

黑盒视角

  • 从黑盒的视角看 show_n_char(),待显示的字符 和显示的次数是输入。执行后的结果是打印指定数量的字符。输入以参数的形式被传递给函数。这些信息清楚地表明了如何在main()中使用该函数。而且,这也可以作为编写该函数的设计说明。                                                     
  •  黑盒方法的核心部分是:ch、num和count都是show_n_char()私有的局部变量。如果在main()中使用同名变量,那么它们相互独立,互不影响。也就是说,如果main()有一个count变量,那么改变它的值不会改变show_n_char()中的count,反之亦然。黑盒里发生了什么对主调函数是不可见的。

欧克,就这样了,明天还有英语考试,

晚睡早起身体好

That's all

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值