一、函数的定义与声明、调用
#include <stdio.h>
int add(int a,int b);//函数声明
int main()
{
int a = 5;
int b= 6;
int sum = add(a,b);// 函数调用
printf("%d %d\n",sum,add(a,b));
}
int add(int a,int b)//函数定义
{
return a + b;
}
传出参数:会从函数带出来的值(起到函数返回值的作用)
传入参数:原本有值,供函数使用
二、函数参数的传递
通过函数调用实现两个整数值的交换
#include <stdio.h>
void swap_2_int_1(int a,int b)//函数1
{
int temp;
temp = a;
a = b;
b = temp;
}
void swap_2_int(int *a,int *b)// 函数2
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a = 5;
int b = 6;
swap_2_int(&a,&b);
printf("%d %d",a,b);
}
如何确定传值还是传地址?
读(不修改)实参变量对应内存空间的值时,传实参变量名。
写(修改)实参变量对应内存空间的值时,传实参变量的地址
【总结的规则】
一维数组用元素指针传参。
二维数组用一维数组指针传参。
三维数组用二维数组指针传参。
指针数组用二维指针来传参。
函数用函数指针传参。
三、函数指针
四、函数返回值
函数返回值的注意事项
①不能返回局部变量的地址
②返回值-1,0,1这些,尽量用宏
③主函数return 0的作用:正常退出(对操作系统负责,良好的编码习惯)
exit是结束一个程序,reurn 是结束当前函数
五、命令行参数
int main(int argc,int *argv[])
argc:命令行参数的个数
argv:存放命令行字符串
六、函数的编码规范
①函数名:函数名要能描述功能,动词+名次
②形参:只做接口,不成为工作变量,对形参做入口检查
③返回值:返回值要清楚明白
④函数内部:
(1)对全局变量小心使用,使用时应保护
(2)<200行,仅实现一个功能,具有独立性
(3)尽量不使用默认和强制类型转换,减少递归的使用
(4)不使用布尔类型,NULL也无意义,对于较长的变量,且多次引用,使用宏