1.函数的定义:返回值类型 函数名(函数列表)
2.函数的声明:返回值类型 函数名(参数类型);
3.函数的调用:变量 = 函数名(参数的值)(在函数有返回值的时候)
注意:若函数无返回值,返回值类型为void
4.函数的传参是从右至左的 如:printf("a:%d, b:%d, c:%d", a, b, c);先传c,再传b,再传a
5.变量分为:局部变量 全局变量
局部变量:在函数内定义
生存周期和作用域:从定义开始到函数结束
主要为:函数的参数,函数内定义的变量
初始值:未初始化值随机,存放在栈里
全局变量:在函数体外定义
生存周期和作用域:从定义开始到进程结束
初始值:未初始化为0,存放在 .bss里
初始化存放在 .data里
全局变量的使用:能不用就不用
如果一定要用,用static修饰
6.声明说明符:存储类型:auto, static, extern, register
类型限定符:const, volatile
类型说明符:void, char, short, int, long, float, double, signed, unsigned
7.变量的存储类型:
auto:只对块的变量有效,它是默认的
static:局部静态变量: 未初始化时,存放在.bss段,值为0。初始化,存放在.data段。提升生存周期,从定义开始到进程结束,并只初始化一次
全局静态变量: 限制作用域,只能在本文件中使用。
externa:外部声明变量
register:寄存器变量
8.类型限定符:
const:只读,可以访问,但无法改变值
volatile: 易失变量,防止编译优化
9.修饰函数的关键字:
static:限制此函数只能在本文件中调用
inline:内联函数就是在调用的时候切换函数的地址,之间将函数体内代码替换到函数调用的位置
是建议性关键字,只适合函数体简洁,代码量少
extern:没有在本文件中定义的函数,声明时可使用此关键字
10.递归函数:递归点,递归终止条件
1 /*求得两个整型数中较大的那个*/ 2 3 #include <stdio.h> 4 5 int compare(int x, int y); 6 7 int main(void) 8 { 9 int x,y; 10 11 printf("请输入两个整数值x,y: "); 12 scanf("%d,%d",&x,&y); 13 14 if (x == y) { 15 printf("两个值相同\n"); 16 } else { 17 printf("最大值为:%d\n",compare(x,y)); 18 } 19 20 return 0; 21 22 } 23 24 int compare(int x, int y) 25 { 26 return (x > y ? x : y); 27 }
1 /*返回给定正整数的倒数,如 给定1234,返回4321*/ 2 3 #include <stdio.h> 4 5 int dao(int y);//求输入的数的逆序数 6 7 int main(void) 8 { 9 int i,n; 10 11 printf("请输入一个正整数: "); 12 scanf("%d",&i); 13 14 n = dao(i); 15 16 printf("%d的倒序数为%d\n",i,n); 17 18 return 0; 19 } 20 21 int dao(int y) 22 { 23 int j; 24 int result = 0; 25 26 for (; y > 0 ;) { 27 j = y % 10; 28 result = result * 10 + j; 29 y = y / 10; 30 } 31 32 return result; 33 34 }
1 /*用递归求一个整型数的阶乘*/ 2 3 #include <stdio.h> 4 5 int factorial(int i); 6 7 int main(void) 8 { 9 int i,j; 10 11 printf("请输入一个数: "); 12 scanf("%d",&i); 13 14 j = factorial(i); 15 16 printf("%d的阶乘为%d\n",i,j); 17 18 return 0; 19 } 20 21 int factorial(int i) 22 { 23 24 if (i > 1) { 25 return i * factorial(i - 1); 26 } 27 28 }
1 /*判断一个整数是否在两个数之间*/ 2 3 #include <stdio.h> 4 5 int judge(int x, int y, int z); 6 7 int main(void) 8 { 9 int x,y,z; 10 11 printf("请输入一个整数,和两个数,x y z: "); 12 scanf("%d%d%d",&x,&y,&z); 13 14 if (judge(x,y,z) == 1) { 15 printf("%d在%d和%d之间\n",x,y,z); 16 } else { 17 printf("%d不在%d和%d之间\n",x,y,z); 18 } 19 20 21 return 0; 22 } 23 24 int judge(int x, int y, int z) 25 { 26 if ((x > y && x < z) || (x > z && x < y)) { 27 return 1; 28 } else { 29 return 0; 30 } 31 }
原文地址:https://www.cnblogs.com/frank-zhao19/p/10284367.html