求出1到10、20到30和35到45的三个的和
#include <stdio.h> // 定义一个函数 void sum(int begin, int end) { int sum = 0; int i = 0; for (i = begin; i <= end; i++) { sum += i; } printf("%d到%d的和是%d\n", begin , end , sum); } int main() { sum(1,10); sum(20,30); sum(35,45); return 0; }
- 函数是一块代码,接收零个或者多个参数,做一件事,并返回另个或者一个值
- 其他的和java差不多,这里就不详细记录了
// 定义返回值的类型 int max(int a , int b) { int ret; if (a > b){ ret = a; }else{ ret = b; } // 这个就是返回值 return ret; } int main() { // 接收返回的值 int x = max(3,6); printf("%d\n", x); return 0; }
像上面把max函数写在上面是因为:
- c的编译器自上而下的顺序分析你的代码
- 在看到max函数的时候,他要知道max函数的样子
- 也就是max函数需要几个参数,每个参数如何,返回什么类型
- 如果main函数写在上面的话,需要把自己定义的函数先进行声明,但是现在大部分编译器也可以不用声明了
// 进行声明 int max(int a , int b); int main() { int x = max(3,6); printf("%d\n", x); return 0; } // 定义返回值的类型 int max(int a , int b) { int ret; if (a > b){ ret = a; }else{ ret = b; } // 这个就是返回值 return ret; }
- 调用函数时给的值与参数的类型不匹配是C语言传统上最大的漏洞
- 编译器总是把你类型转换好,但这可能不是你所期望的
- 后面的语言,c++/java在这方面很严格
void cheer(int i) { printf("cheer %d\n", i); } int main() { double f = 8.4; cheer(f); // 8 cheer(2.0); // 2 return 0; }
- 每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系
- 过去,对于函数参数表中的参数,称“形式参数”,调用是给的参数叫“实际参数”
- 函数的每次运行,就产生一个独立的变量空间,在这个空间中的变量,就是函数的这次运行多独有的,称之为本地变量
- 定义在函数内部的变量就是本地变量
- 参数也是本地变量
- 生存期:什么时候这个变量开始出现了,什么时候消亡了
- 作用域:在代码的什么范围内可以访问这个变量
- 对于本地变量:前面两个问题的答案都是 --- 在大括号内
- 本地变量都是定义在块(大括号)内的
- 他可以是定义在函数的块内
- 也可以定义在语句的块内
- 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
- 块外面定义的变量在里面仍然有效
- 块里面定义了和外面同名的变量则覆盖了外面的
- 不能在一个块内定义同名的变量
- 本地变量不会被默认初始化
- 参数在进入函数的时候会初始化
来源:博客园
作者:山丘i
链接:https://www.cnblogs.com/mengd/p/11613873.html