|
发表于 2022-11-24 23:22:30
|
显示全部楼层
本帖最后由 jackz007 于 2022-11-24 23:25 编辑
- #include<stdio.h>
- int main()
- {
- int f(int) ; // 声明函数 f() 是有一个 int 型输入参数,返回值为 int 型值的一个函数
- int a = 2 , i ; // 定义 int 型变量 a 和 i,并为 a 赋初值 2
- for(i = 0 ; i < 3 ; i ++) printf("%d\n" , f(a)) ; // 循环 3 次,循环变量依次为 i = 0、1、2,循环中,以 a 为实参调用函数 f(),并打印返回值。
- // a 的值为 2,三次调用 f(a) 将分别返回:7,8,9。printf() 将会分 3 行打印输出这三个数值
- return 0 ; // main() 是 int 型函数,需要有一个 int 型返回值 0
- }
- int f(int a) // 定义函数 f() 为带有一个int 型参数 a 并返回 int 型值的一个函数
- {
- auto int b = 0 ; // 定义 int 型局部变量 b,并初始化其值为 0,这样,每次调用函数 f(),b 的值都会被初始化为 0 值
- static c = 3 ; // 定义 int 型静态变量 c,并初始化其值为 3,静态变量与普通局部变量有所不同,局部变量在每次调用
- // 函数的时候,都会把其值初始化为指定的数值,而且,每一次都一样,例如,b = 0。静态变量就不同了,
- // 静态变量是在程序编译的时候,由编译程序给赋的初值,此后,每次调用函数的时候,如果静态变量的值
- // 被改变了,那么,它的值会一直被保持。例如,上一次调用 c 的值是 9,那么,这一次调用进入函数的
- // 时候,c 的值还是 9
- b = b + 1 ; // b = b + 1 = 1 ,b 是普通局部变量,所以,每一次执行完这一句,b 的值一定是 1
- c = c + 1 ; // c = c + 1,c 是静态变量,所以,c 的新值是上一回退出时的值加 1,第1次调用 c = 4,第 2 次调用
- // c = 5,第 3 次调用 c = 6
- return a + b + c ; // 由于 c 是静态变量,而且,在每一次调用中的值并不相同,所以,函数每一次返回的数值也会有所不同
- // 第1次返回 a + 1 + 4 = a + 5,第2次 a + 1 + 5 = a + 6,第3次 a + 1 + 6 = a + 7,余此类推。
- }
复制代码 |
|