01函数的使用注意事项
1. C程序是由多个函数构成的。
C程序可由多个文件组成,文件负责组织存放若干个函数。
2. 源程序文件为C程序的编译单位,
每个文件单独编译,便于调试。
3. main函数是程序执行的入口,
main函数可以调用其他函数,
其他函数调用结束后,还要返回main函数,
main函数执行完毕,整个程序就结束了。
4. main函数可以出现在任何位置,
但每个程序有且仅有一个main( )函数。
5. C程序的所有函数都是平行定义的,
在一个函数内部不允许定义另外的函数。
函数可以互相调用,但是不能调用main函数。
函数的分类
>无参函数
>有参函数
形参:在函数定义及函数说明时都有参数,称形式参数。
实参: 在函数调用时也必须给出参数,称为实际参数。
进行函数调用时,主调函数将把实参的值传送给形参.
02函数参数的注意事项
参数:
通过形式参数和实际参数
函数传递参数机制--按值传递
关于形参与实参的说明:
1. 实参可以是常量、变量或表达式,
在调用时将实参的值赋给形参。
2.实参与形参的类型应相同或赋值兼容。
3. 形参变量只有在被调用时才分配内存单元,
在调用结束时, 即刻释放所分配的内存单元。
形参只有在函数内部有效。
函数调用结束返回主调函数后则不能再使用该形参变量。
4. 实参向形参的数据传递是单向“值传递”
只能把实参的值传送给形参,
不能把形参的值反向地传送给实参。
在函数调用过程中形参的值发生改变,实参的值不会变化。
数组元素作为函数参数-按值/地址传递
数组元素作为函数参数-按值传递
数组元素作为函数实参和一个普通变量用法相同 ,
函数调用时值传送是把实参变量的值赋予形参变量
数组名作为函数参数-按地址传递
数组名实际上是一个常量地址,当用数组名作为实参时,实际上是把该常量地址传给形参。
形参数组并不分配接收实参数组元素的数据空间,只是分配一个接收常量地址 .
数组元素作为函数参数-按值传递
如int a[10]; 用a[3]之类做函数参数,这相当于将a[3]的值拷贝一份传入函数中,与普通按值传递效果一样。
数组名作为函数参数-按地址传递
相当于传入数组的首地址,然后函数用指针形参来接受,通过指针来访问相应的地址,直接改变的是原来实参的数组元素。
同时因为传入是数组的地址即指针,所以函数中形参是指针,所占空间的大小只是一个指针的大小,在函数中也无法确定数组的长度(一般再传入一个变量来表示他的大小)。
通常为了能够让函数处理不同长度的数组,函数的参数表应指定接收数组名及数组大小。
一维形参数组可以省略维数(因为函数中只是数组的地址,所以数组的大小对其开辟空间之类的没有影响,不管维数写多少都没有作用),但是不能省略[ ] !(为了表示他是一个数组)
多维数组也可以作为函数的参数。
此时按照地址传递时,二维数组的行数可以省略,而列数不能省略。int a[][10];这样做函数的参数,相当于一个指向一维数组(十个元素的数组)的指针。如果省略列数就不知道指向的数组是几个元素了。
ps:另外公众号开了一个月了才刚刚过百的同年关注我,真是让我好伤心啊...求同年们给自己的小伙伴分享一下啊,一起来努力呀!