C语言中static关键字的神奇之处
来源:互联网 发布:java中printf格式化输 编辑:程序博客网 时间:2024/06/05 10:52
首先介绍static关键字
static翻译成汉语是:静止的;不变的,在C语言中主要有三个作用
1.static修饰局部变量
static修饰局部变量的作用是是数据保持的更久一些,同时static修饰的局部变量的存储区是在静态存储区的,被static修饰的变量可以称之为静态变量,若在定义是不显示的对它进行初始化,则编译器会对它隐式的初始化为0(全局变量也是相同的),它的生命周期是从定义开始处一直到程序运行结束,比如说下面的程序:
<span style="font-size:18px;">#include<stdio.h>#include<stdlib.h>int main(){static int a; //声明静态变量a没有显示的初始化 所以编译器会隐式的初始化为0static int b = 10; //声明静态变量b,它和a一样在静态存储区存储,生命周期在程序结束处int c = 20; //普通变量 执行到这一步才会在栈区开辟空间进行初始化printf("a=%d\nb=%d\nc=%d\n", a, b, c);system("pause");return 0;}</span>
程序运行结果是:
2.static修饰全局变量
3.static修饰函数
static修饰全局变量和函数的时候的作用是一致的,就是修改连接属性,对于全局部变量和函数的声明默认的是具有外部连接属性的,就是通过extern关键字可以在别的文件中使用,但是如果static修饰了全局变量或者函数,那么它的连接属性就会变为内部连接属性,即就是只能在本源文件中使用,别的源文件不能使用它们。举个例子
#include<stdio.h>#include<stdlib.h>static int d = 10; //声明全局静态变量int e = 10;static void fun1() //函数用static修饰{printf("this is an example\n");}void fun2(){;}int main(){return 0;}
现在有一个源文件是a.c其中声明了静态全局变量 static int d=10和static修饰的函数fun1(),如果想在另一个源文件中b.c使用,通过extern是不能办到的,因为它的连接属性已经被修改为内部链接属性。但是在b.c中可以在通过
extern int e = 10;
extern void fun2();
在b.c中就可以使用它们了,因为它们的连接属性是外部的。
1 0
- C语言中static关键字的神奇之处
- C语言之static关键字的使用
- c语言中static 关键字的使用
- C语言中static关键字的作用
- C语言中,关键字static的作用
- C语言中,关键字static的作用
- C语言中,关键字static的作用
- C语言中static关键字的作用
- C语言中static关键字的思考
- C语言中static关键字的作用
- C语言中static关键字的作用
- C语言中static关键字的作用
- C语言中static关键字的作用
- C语言关键字之static
- C语言中static关键字
- C语言中关键字static
- C语言的static关键字
- C语言的static关键字
- linux 常用命令
- Makefile下 $(wildcard $^),$^,$@,$?,$<,$(@D),$(@F)
- 10007---Java中从控制台输入数据的几种常用方法
- POJ2407 欧拉函数
- elasticsearch相关配置
- C语言中static关键字的神奇之处
- SurfaceView的了解
- Java实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为
- BestCoder Round #63 (div.1) A.sequence2
- 重新滚回来了
- 工作第二日
- 怎样通过MSG_WAITALL设置阻塞时间
- Android基础 获取屏幕的宽与高
- maodian