最近的内容相对变得复杂点了,希望大家在看的时候可以将代码和文字相结合。重在理解概念,程序很简单。主要是学习理解一些概念性的东西~~~~~~
为了从调用函数向被调用函数传递数据也需要被调用函数提供一组存储区,这些存储区的个数和类型任意可以在函数名称后的小括号里声明一组变量,这些变量就用来表示上面提到的存储区
这些变量叫做函数的形式参数,小括号里的整体叫做形式参数列表
每个形式参数的类型名称都不可以省略,不同形式参数声明之间逗号分开
调用函数需要首先提供一组数字,这些数字叫做实际参数。计算机把实际参数记录在形式参数的存储区里。被调用函数里就可以象使用普通变量一样使用形式参数。
只要能当作数字使用的内容都可以作为实际参数使用函数可以不提供这组存储区,这个时候应该在函数名称后的小括号里写void,如果函数名称后面的下括号里什么都没写则表示函数可以提供任意多个任意类型的形式参数
练习:
1.编写函数计算两个整数的求和结果并把这个结果传递给调用函数。这两个原始整数应该由调用函数提供
2.编写函数解决鸡兔同笼问题总头数和脚数由调用函数提供
数组可以当作形式参数使用仅仅是把形式参数写成数组的格式,但是真正的形式参数并不是一个数组
数组形式参数里的所有存储区都不是被调用函数提供的
使用数组作为形式参数可以让被调用函数使用其他函数提供的存储区
调用函数和被调用函数都可以使用数组形式参数里包含的存储区
可以利用数组形式参数实现双向数据传递,这种参数叫做输入输出参数
数组形式参数声明时可以省略其中包含的存储区个数
使用数组作为形式参数的时候必须使用另外一个整数类型形式参数表示数组中存储区个数
练习:
1.编写函数把调用函数中一个数组里所有存储区的内容改成相反数
2.编写函数生成一张彩票,彩票中包含7个1到36之间的随机数。调用函数负责把彩票中的数字打印在屏幕上
C语言中函数参数的个数可以是不确定的这种参数叫变长参数
变长参数不能在编写函数的时候进行命名,在被调用函数内部需要使用特殊的方法获得没有命名的参数
如果编译器首先遇到函数调用语句则会猜测函数的格式。计算机认为函数有一个整数类型的存储区用来记录返回值,函数有任意多个任意类型的形式参数。这个猜测结果叫做函数的隐式声明。
隐式声明中所有形式参数的类型或者是int或者是double
如果隐式声明和实际格式不一致则编译会出错可以把函数大括号前面的部分单独写成一条语句放在文件开头,这条语句里可以省略形式参数名称。这叫做函数的显式声明
显式声明可以避免隐式声明除了主函数以外的所有函数都应该进行显式声明
return关键字可以随时结束函数的执行
exit标准函数可以随时结束整个程序的执行
为了使用这个标准函数需要包含stdlib.h文件
这个函数需要一个整数类型的实际参数,这个实际参数用来告诉计算机程序是否正常结束了。0表示正常结束。