函数(组成c语言的最基本的单元,函数)
函数的定义格式
<存储类型> <返回值类型><函数名字>(参数列表)
{
函数体;
return ;
}
函数的三要素:
1.功能唯一
2.有固定的输入
3.有固定的输出
封装函数的原则:
高内聚,低耦合
函数的返回值类型:
void 无返回值
void *
char
char *
int
int *
long
long *
float
float *
double
double *
等等
函数名字定义格式:
1.函数名必须是数字,字母,下划线组成的
2.函数做到见名知意
3.函数命名格式
void check_word(void)
{
}
void CheckWord(void)
{
}
函数的参数列表:
1.函数如果没有参数列表,
可以不写,或者写成void
2.传递的的参数
2.1.值传递:在函数中修改形参数的值,
实参拿不到修改后的结果
2.2.地址传递
2.3.传递数组:不是将数组的所有成员
都传递过来了,是传递过来了首地址。
void access_array(int a[3])
{
printf("sizeof a = %d\n",
sizeof(a)); //结果是4
}
3.参数列表一般小于等于4个效率最好
函数的返回值:
函数的返回值要和函数的返回值类型相同
函数嵌套问题:
在一个函数内,你可以调用
一次或者多次另一个函数。
在一个函数内,你可以调用自己(递归)
求n!使用递归函数实现
n! = n *(n-1)*(n-2)...2*1;
int fact(int n)
{
if(n==1) return 1; //递归一定要注意结束条件
return n*(fact(n-1));
}
指针函数(函数的返回值是一个指针。)
char *chang_word_position()
{
return 地址;
}
eg:(如下写法是错误的)
int * return_number(void)
{
int a = 10;
//a是一个局部变量,在函数调
用的时候被分配内存,当函数
执行结束,这个内存就被操作
系统释放了
return &a;
}
函数指针
int (*func)(int a,int b);
它是一个指针,它指向了一个函数。
int add(int a,int b)
{
return (a+b);
}
int (*func)(int,int) = add;
printf("sum = %d\n",add(5,10));
printf("sum = %d\n",func(5,10));
printf("sum = %d\n",(*func)(5,10));