静态函数static的理解(代码非原创,博客内容纯属本人感悟)
来源:互联网 发布:linux修改分区大小 编辑:程序博客网 时间:2024/04/29 19:21
int f( int a)
{
auto b = 0;
static c = 3;
b = b + 1;
c = c+ 1;
return ( a+ b+ c) ;
}
main( )
{
int a = 2, i;
for ( i = 0; i < 3; i + + )
printf ( "%d\n" , f( a) ) ;
}
输出7
8
9.
因为static函数只在第一次调用该函数时被初始化,后面每次调用该函数时以上一次的值作为初值,可以理解为具有记忆性。
而auto函数则是调用一次该函数初始化一次该函数。
比若说第一次运行该程序时,初始化c=3,初始化b=0,第一次运行后c=4,b=1.计算得答案为7.
则第二次运行该函数时,由于static函数的记忆性,c初值为4,运行后变为5,而auto函数是自动变量,此时它将b的值依旧初始化为0,运行后变为1.计算答案8.
第三次运行该函数时,由于static函数的记忆性,c初值为5,auto函数是自动变量,此时它将b的值依旧初始化为0.计算答案9.
---------------------神奇的分界线------------------------------------------
1 #include <stdio.h>
void main()
{
int a,i;
for(a=1;a<=4;a++)
{
static int i=2;
i+=2;
printf("%d\n",i);
}
}
此函数输出 4 6 8 10
-------------
2 #include <stdio.h>
void main()
{
int i;
for(i=1;i<=4;i++)
{
static int i=2;
i+=2;
printf("%d\n",i);
}
}
此函数输出 4 6 8 10
-------------
3 #include <stdio.h>
void main()
{
int i;
for(i=1;i<=4;i++)
{
int i=2;
i+=2;
printf("%d\n",i);
}
}
此函数输出 4 4 4 4
****
总结,由例一和例二得知,对于static函数而言,for中的i和static所定义的i实际上互不影响。结合例三和例二也可以看出.
- 静态函数static的理解(代码非原创,博客内容纯属本人感悟)
- 经典js代码收藏(非本人原创)
- (static)静态代码块,非静态代码块和构造函数
- 非原创,纯属自我鼓励。
- 本人的原创代码(SQL及T_SQL)
- static静态代码块与非静态代码块 + 构造函数
- static静态代码块与非静态代码块 + 构造函数
- static静态代码块与非静态代码块 + 构造函数
- static静态代码块与非静态代码块与构造函数执行顺序
- static静态代码块与非静态代码块 + 构造函数
- 【原创】decode函数的感悟
- 静态变量 静态对象 静态函数和非静态函数的区别。(我的理解,大家看看对不对)
- Java加在静态函数(static)和非静态函数中用File类读取resources在的文件
- Java加在非静态函数和静态函数(static)中用File类读取resources在的文件
- java中静态代码块,非静态代码块的用法 static用法详解
- static{}(静态代码块)与{}(非静态代码块)的异同点
- static关键字的作用以及静态成员函数与非静态成员函数的区别
- 声明:本人的博客文章均来至互联网转载,没有原创
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- MySQL刷日志
- 无人机驾驶员培训学习记录(二十)
- java常用IO流简介(二)
- Android Audio 架构分析
- 静态函数static的理解(代码非原创,博客内容纯属本人感悟)
- Leetcode 730. Count Different Palindromic Subsequences
- linux学习第三十二篇:linux任务计划cron,chkconfig工具,systemd管理服务,unit介绍,target介绍
- 在Celery中使用scikit-learn
- 关于适配所有移动端屏幕且到固定宽度时居中的写法
- CentOS 6.8 安装配置 vsftpd 文件服务器
- Codeforces Round #448 (Div. 2)B. XK Segments (双指针 or 二分 )
- myeclipse下hadoop安装并运行
- 51Nod 1347 旋转字符串