C语言学习(8)

1.static 作用:

 

修饰局部变量,改变生命周期,使得生命周期变长。

上述程序解说:根据上一节笔记五个a=1的举一反三,当我们加入static 时,整个程序发生了变化。首先还是从int  main()开始读起:i=0进入while判断成立,进入while的{}里的tset();转入void tset(){},此时的static int a=1是读了的,a++=2,printf输出的a结果是2;离开}跳到i++,i=1;回到while行进行判断,仍然成立,再次进入{tset(),转入void tset(){ 但是这次不再经过第四行,直接跳到第五行a++(因为上一次a=2的结果进行了保存,并没有销毁),这一次,printf打印出的a=3,后面以此类推,直到i++=5,回到while判断,不满足,不在进入while(){}直接跳到return 0 } 此程序结束。如果不知道怎么看程序走势,同时按住Fn F10,逐句看代码跑向即可。

 

 虽然是两个.c文件,但是全局变量的作用范围应该是可以通用的,所以我们只需在源文件外的另一个文件里定义是前面附带extern 即可使用。但是,如果源文件中加入staic,另一个文件即使加了exrern也不可以!可以理解成这个全局变量的作用域被限制住了。

而修饰全局变量,改变了作用域,作用域变小,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没法在使用了。

一般的进行函数声明 :

 

 但是如果函数定义的源文件前加static,即使另一个文件进行了函数声明也不能运行成功。此时报错的的内容与static修饰全局变量有类似之处。

所以说明static修饰函数改变了函数的链接属性。(一个函数如果没有static修饰,它是具有外部链接属性的)

/*利用#define定义标识符常量
#include<stdio.h>
#define Max 100
int main()
{
int a=Max;
return 0;
}
#include<stdio.h>
int main()
{
int a=10;
int b=20;
int max=Max(a,b);/*函数方式定义两个数中的较大值*/
printf("max=%d\n",max);
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值