static和auto的用法,文字太枯燥,还是代码解释比较好,你觉得呢?

简介: static和auto的用法,文字太枯燥,还是代码解释比较好,你觉得呢?

static的第一种用法:定义为静态变量

何为静态变量?存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。就是只进行一次初始化。不理解?看代码!


代码见真知:

#include<stdio.h>
int main()
{
  void fun();   //定义一个空函数
  for(int i=0;i<3;i++)
  {
    fun();    //调用函数
  }
  return 0;
} 
void fun()  
{
  int i=0; 
  static int static_i=0;
  printf("没有加static的结果为:%d\n",i);
  printf("加了static的结果为:%d\n",static_i); 
  i++;    //没有加static,i最终都会被初始化为0
  static_i++;  //加了static,只初始化一次,后面继续累加
  printf("\n");
}


运行结果:

由结果可以看出有static的在持续累加,除了第一次没有再初始化。


static的第二种用法:有理说不清,直接代码见真知

#include<stdio.h>
int main()
{
  int i,sum;
  sum=2;
  for(i=0;i<3;i++)
  {
        //外置模块
    printf("外置模块为:%d\n",sum);
    sum++;
        //内置模块
    {
      static int sum=1;  //局部重新定义sum的初始值
      printf("内置模块为:%d\n",sum);
      sum++;
    }
    printf("\n");
  }
  return 0;
} 


运行结果:

由结果可见:外置模块和内置模块是互不影响的,这就是static的第二种用法,保持局部一部分稳定,不会随外部的变化而变化。


auto的用法:直接代码见真知

#include<stdio.h>
int main()
{
  int i,sum;
  sum=2;
  for(i=0;i<3;i++)
  {
        //外部
    printf("外置模块为:%d\n",sum);
    sum++;
        //局部
    {
      auto int sum=1; 
      printf("内置模块为:%d\n",sum);
      sum++;
    }
    printf("\n");
  }
  return 0;
} 


代码看不懂?结合运行结果就懂了:

由结果显而易见:外置模块持续累加,内置模块全部为1,与static的第二种用法相比较,auto局部不断进行初始化 ,而static是局部除第一次外不再初始化。


相关文章
|
10月前
|
人工智能 移动开发 前端开发
Markdown-to-Image:开源的在线 Markdown 转海报编辑器
Markdown-to-Image 是一款开源的在线 Markdown 转海报编辑器,能够将 Markdown 文本内容转换为图像,适用于创建社交媒体帖子、海报和其他视觉内容。该工具支持多种输出格式,并允许用户自定义样式,适用于多种应用场景。
691 4
Markdown-to-Image:开源的在线 Markdown 转海报编辑器
|
11月前
|
传感器 算法 IDE
基于Arduino的遥控自平衡小车
基于Arduino的遥控自平衡小车
284 41
|
10月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
205 1
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
1550 12
|
11月前
|
安全 网络协议 物联网
物联网僵尸网络和 DDoS 攻击的 CERT 分析
物联网僵尸网络和 DDoS 攻击的 CERT 分析
|
关系型数据库 应用服务中间件 数据库
如何安装和配置 Django 与 Postgres、Nginx 和 Gunicorn
如何安装和配置 Django 与 Postgres、Nginx 和 Gunicorn
122 0
|
前端开发 JavaScript
如何在文本域右下角设置字数限制提示
如何在文本域右下角设置字数限制提示
426 3
|
安全 关系型数据库 MySQL
|
小程序 前端开发 安全
微信小程序——后台交互个人中心授权登录
微信小程序——后台交互个人中心授权登录
476 0
|
算法 数据可视化 定位技术
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法

热门文章

最新文章