一,嵌套调用与链式访问
1,嵌套调用:函数之间的互相调用
简单来说就是一个函数里面包含另一个函数
2,链式访问:将一个函数的返回值作为另一个函数的参数
int main()
{
int len = strlen("abcdef");//1.strlen求⼀个字符串的⻓度
printf("%d\n", len);//2.打印⻓度
return 0;
}
可以把两条句子结合起来:
int main()
{
printf("%d\n", strlen("abcdef"));//链式访问
return 0;
}
二,函数的声名和定义
1,单个文件
a,函数要先声名后使用
b,函数的定义也是一种特殊的声名
c,所以说,可以先定义函数然后再使用。也可以先声明,在使用,后定义。这两种方法都是可以的。
代码如下:
//判断⼀年是不是闰年
int is_leap_year(int y)//这是声明
{
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
return 1;
else
return 0;
}//这是定义
int main()
{
int y = 0;
scanf("%d", &y);
int r = is_leap_year(y);//这是调用
if (r == 1)
printf("闰年\n");
else
printf("⾮闰年\n");
return 0;
}
2,多个文件
写的代码较多,可以将代码拆分到多个文件中
a,函数,类型的声名放在头文件中(.h)
b,函数的实现放在源文件中(.c)
add.c(函数的定义)
int Add(int x, int y)
{
return x + y;
}
add.h(函数的声明)
int Add ( int x, int y);
test.c (函数的实现)int main()
{
int a = 10;
int b = 20;
int c = Add(a, b);
printf("%d\n", c);
return 0;
}
三,static和extern
1,static作用
a,static 修饰局部变量
简单来说就是局部变量变为全局变量
# include <stdio.h>void test (){static int i = 0 ; //static修饰局部变量i++;printf ( "%d " , i);}
static int g_val = 2018 ;
static int Add ( int x, int y){return x+y;}