C语言中static和auto用法详解

 更新时间:2022年01月17日 10:54:58   作者:PEI.大.大  
大家好,本篇文章主要讲的是C语言中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是局部除第一次外不再初始化。

static和auto的相同之处是都能只在局部进行改变,与外置模块互不干涉。

总结

到此这篇关于C语言中static和auto用法详解的文章就介绍到这了,更多相关C语言static和auto内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Visual Studio 2019中修改项目名的方法

    在Visual Studio 2019中修改项目名的方法

    这篇文章主要介绍了在Visual Studio 2019中修改项目名的方法,文中通过示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • C++11新特性std::make_tuple的使用

    C++11新特性std::make_tuple的使用

    这篇文章主要介绍了C++11新特性std::make_tuple的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C++重载运算符的规则详解

    C++重载运算符的规则详解

    运算符重载函数可以是类的成员函数,也可以是类的友元函数,还可以是既非类的成员函数也不是友元函数的普通函数
    2013-10-10
  • 详解C++17中的decltype类型推导

    详解C++17中的decltype类型推导

    这篇文章主要介绍了C++17中的decltype类型推导,本文从泛型编程中经常会遇到2个常见问题入手,循序渐进的分析了从C++11开始引入的关键字decltype,需要的朋友可以参考下
    2023-06-06
  • C++日历拼图的解法你了解吗

    C++日历拼图的解法你了解吗

    这篇文章主要为大家详细介绍了日历拼图C++的解法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 详解C++中常量的类型与定义

    详解C++中常量的类型与定义

    这篇文章主要介绍了详解C++中常量的类型与定义,使用#define与const来定义常量是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-05-05
  • C 语言结构体的使用方法

    C 语言结构体的使用方法

    这篇文章主要介绍了C 语言结构体的使用,文章介绍了结构体定义的多种类型,想具体了解的朋友请看下面文章的内容
    2021-09-09
  • C语言数组与地址、数组名到底是什么详解

    C语言数组与地址、数组名到底是什么详解

    在写代码的时候,我们经常用到数组,那么有没有想过数组名是什么呢?这篇文章主要给大家介绍了关于C语言数组与地址、数组名到底是什么的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • C语言实现万年历效果

    C语言实现万年历效果

    这篇文章主要为大家详细介绍了C语言实现万年历效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C++11的for循环的新用法(推荐)

    C++11的for循环的新用法(推荐)

    C++11这次的更新带来了令很多C++程序员期待已久的for range循环,每次看到javascript, lua里的for range,心想要是C++能有多好,心里别提多酸了。这次C++11不负众望,再也不用羡慕别家人的for range了。下面看下C++11的for循环的新用法
    2021-11-11

最新评论