C语言中的static的用法(超级详细)

            <div id="content_views" class="htmledit_views">
                <blockquote> 

🌹作者:云小逸
📝个人主页:[云小逸的主页]
📝码云:云小逸 (YunXiaoYi003)
🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。希望春天来之前,我们一起面朝大海,春暖花开!🤟
👏专栏:C语言初阶👏日常杂记👏

static

static 一般用于修饰局部变量,全局变量,函数;
(1)static修饰局部变量:

 
 
  1. #include <stdio.h >
  2. void test()
  3. {
  4. int a = 1;
  5. a + +;
  6. printf( "%d ", a);
  7. }
  8. int main(void)
  9. {
  10. int i = 0;
  11. while (i <= 10)
  12. {
  13. test();
  14. i + +;
  15. }
  16. return 0;
  17. }
此时结果为2 2 2 2 2 2 2 2 2 2   

将int a=1;改为static int a=1; 后: 

结果为2 3 4 5 6 7 8 9 10

是因为改为static int a=1;后,出了作用域,不会销毁a的值,想要理解其本质,首先先看一下这个图:

 static修饰局部变量时,会影响局部变量的生命周期,本质上改变了局部变量的存储位置,生命周期变长,为整个周期。静态局部变量存储于进程中的全局数据区。

(2).static修饰全局变量

首先我们要知道全局变量的属性:全局变量具有外部链接属性。而static修饰全局变量时,这个全局变量的外部链接属性变为内部链接属性,是其他源文件(.c)文件就可以再使用这个全局变量了。则使用时我们会感觉到该全局变量作用域变小。 

 

 

(3).static修饰函数

此类情况类似于static修饰全局变量。函数同样具有外部属性。而static修饰函数时,这个函数的外部链接属性变为内部链接属性,是其他源文件(.c)文件就可以再使用这个函数了。则使用时我们会感觉到该函数作用域变小。

总结:

static修饰变量

   a. 函数中局部变量:

      声明周期延长:该变量不随函数结束而结束

      初始化:只在第一次调用该函数时进行初始化

      记忆性:后序调用时,该变量使用前一次函数调用完成之后保存的值

      存储位置:不会存储在栈上,放在数据段

   b. 全局变量

     改变该变量的链接属性,让该变量具有文件作用域,即只能在当前文件中使用

   c. 修饰变量时,没有被初始化时会被自动初始化为0

  2. static修饰函数

   改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用

 

  最后如果觉得我写的还不错,请不要忘记点赞,收藏,加关注哦(。・ω・。)

https://blog.csdn.net/m0_68865259/article/details/124186488?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172119826416800185864344%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=172119826416800185864344&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-124186488-null-null.142v100pc_search_result_base9&utm_term=static&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值