staitc用于函数内部和函数外部的不同
2015-10-26 23:01
267 查看
只有比别人更早、更勤奋地努力,才能尝到成功的滋味
1、当static用于函数内部时,例如static int i;当函数执行完后,i不会被释放,下一次调用函数时,i的值会保留上次的值继续使用。
程序如下:
结果:
static定义的静态变量在每一次的函数调用中,只有第一次进行了初始化,因为从程序的输出结果为3,4,6可以看出,
第一次fun(0)时,执行了static int value =3;然后 value+=i;得value=3;当运行fun(1)的时候,程序跳过static int value =3;
执行 value+=i;得value=3+1;所以value=4;
#include <stdio.h>
#include <stdlib.h>
void fun(int i)
{
static int value =3;
value+=i;
printf("%d\n",value);
}
int main()
{
fun(0);
fun(1);
fun(2);
return 0;
}
2、当statc用于子函数外部时
static int i;
int j;
在这里,i与j都是全局变量,二者的区别是,j可以被别的文件使用,i只能在本文件中使用,这是static对全局变量的作用。
1、当static用于函数内部时,例如static int i;当函数执行完后,i不会被释放,下一次调用函数时,i的值会保留上次的值继续使用。
程序如下:
#include <stdio.h> #include <stdlib.h> void func() { static int i=0; int j=0; i++; j++; printf("i: %d, j: %d \n",i,j); } int main() { func(); func(); return 0; }
结果:
static定义的静态变量在每一次的函数调用中,只有第一次进行了初始化,因为从程序的输出结果为3,4,6可以看出,
第一次fun(0)时,执行了static int value =3;然后 value+=i;得value=3;当运行fun(1)的时候,程序跳过static int value =3;
执行 value+=i;得value=3+1;所以value=4;
#include <stdio.h>
#include <stdlib.h>
void fun(int i)
{
static int value =3;
value+=i;
printf("%d\n",value);
}
int main()
{
fun(0);
fun(1);
fun(2);
return 0;
}
2、当statc用于子函数外部时
static int i;
int j;
在这里,i与j都是全局变量,二者的区别是,j可以被别的文件使用,i只能在本文件中使用,这是static对全局变量的作用。
相关文章推荐
- Linux C函数参考手册(PDF版)
- Lua教程(十七):C API简介
- C#实现打造气泡屏幕保护效果
- C/C++数据对齐详细解析
- 利用C语言来求最大连续子序列乘积的方法
- 字符串的组合算法问题的C语言实现攻略
- C 语言基础教程(我的C之旅开始了)[三]
- C++中的extern “C”用法详解
- C 语言基础教程(我的C之旅开始了)[七]
- 最大子矩阵问题实例解析
- C字符串操作函数实现方法小结
- 字典树的基本知识及使用C语言的相关实现
- 详解C语言中free()函数与getpagesize()函数的使用
- C/C++ 宏详细解析
- 使用C语言解决字符串全排列问题
- C/C++实现对STORM运行信息查看及控制的方法
- 用C#生成不重复的随机数的代码
- C#代码实现PDF文档操作类
- String.Format大全(C# Java)