当前位置:网站首页>c语言中的六个存储类型:auto register static extern const volatile
c语言中的六个存储类型:auto register static extern const volatile
2022-07-25 09:08:00 【lhb2998658795】
1.auto:
自动类型的变量(非自动类型的变量:全局变量,或者static修饰的变量)自动类型的变量前默认缺省auto,在实际的工作开发过程中是见不到的。
2.register:修饰的是寄存器变量
1.register修饰的变量要比普通的变量运算效率高(但不能把所有的变量都定义成register修 的, 因为寄存器在芯片内部是有个数限制的)
2.register修饰的变量不能够取地址
3.static
3.1static的作用:
1.static局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。再次调用该函数可以再次使用。
2.static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
3.static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;
(1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰
(2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)
3.2static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
1)static修饰的全局变量和去普通的全局变量一样都分配在静态区,但是普通的全局变量,它作用于整个源代码,当如果出现同名的全局变量时,只能有一个初始化,不然就会连接失败,而static修饰的全局变量,只作用于本文件中,在其它文件中不起作用,因此可以避免在其它源文件中引起错误。
2)static局部变量只初始化一次,下一次的值依据上一次的结果值,从而延长了生命周期,而局部变量如果程序结束再次开始时候,又将被重新定义。
3)static函数在内存中只有一份,普通函数爱每个被调用中维持一份拷贝。
4.extern:修饰调用的变量或者函数是在其他文件中的
extern int num; //extern修饰的num变量不能赋初值,只起到声明的作用
//如果修饰的变量是其他文件中的,变量前一定要加extern
extern int add(int ,int );//声明函数的时候可以加也可以不加
5.const:在谁前谁就不能被修改
const:修饰的是只读的变量(const修饰的不是常量)
const int a=10; //a的值不能够修改了
const int *p = &a; //p可以修改,*p不能修改
int const *p = &a;//p可以修改,*p不能修改
int *const p = &a//p不可以修改,*p可以修改 //const在谁前谁就不能更改
注:const修饰的局部变量在栈空间,const修饰的全局变量在.ro段
1.欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了;
2.对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或 二者同时指定为const;
3.在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值;
4.对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的变量;
5.对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。
6.volatile
volatile:易变的
如果使用volatile修饰变量,变量每次都会从内存中获取值,不从缓存中获取值。
使用的场景:
1.对应硬件寄存器前最好加上volatile
请向0xaabbccdd地址中写0x12345678的值?
#define P (volatile unsigned int *)0xaabbccdd
*P = 0x12345678;
2.在多线程中访问全局,这个全局变量就需要加volatile
3.在中断中访问非自动类型的变量
边栏推荐
- 整理 华为AP-3010DN_V2配置创建wifi
- sticksy.js页面滚动div固定位置插件
- 这是我见过写得最烂的Controller层代码...
- What is steel grating?
- 图解LeetCode——1184. 公交站间的距离(难度:简单)
- [STL]list模拟实现
- How does Youxuan database encrypt data?
- Illustration leetcode - 919. Complete binary tree inserter (difficulty: medium)
- BGP border gateway protocol basic knowledge points
- Wechat reservation of small program completion works (5) assignment book of small program graduation project
猜你喜欢

51单片机外设篇:电机

Why use MQ message oriented middleware? These questions must be taken down!

JS touch screen game source code ice and snow journey

【npm】 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
![[deep learning] mask Dino Trilogy - the correct way to open Detr Pandora's box](/img/5c/52ccc0583451eba15fec18adb1499e.png)
[deep learning] mask Dino Trilogy - the correct way to open Detr Pandora's box

51 single chip microcomputer controls nixie tube display

Sticky.js page scrolling div fixed position plug-in
![[hero planet July training leetcode problem solving daily] 19th binary tree](/img/16/d4beab998f00e09bb45c64673bb2c8.png)
[hero planet July training leetcode problem solving daily] 19th binary tree

51 MCU peripherals: buzzer

Illustration leetcode - 1184. Distance between bus stops (difficulty: simple)
随机推荐
Oracle10g单实例数据库升级到哪个版本好,求建议
图解LeetCode——1184. 公交站间的距离(难度:简单)
Graduation project of wechat small program ordering system of small program completion works (7) Interim inspection report
51 MCU peripherals: Motor
Learn about spark project on Nebula graph
How to connect tdengine with idea database tool?
Additional: in the lower division / county (data sheet)
Software examination system architecture designer concise tutorial | software life cycle
Dependency conflict resolution under idea
Algorithm --- flip digit (kotlin)
YOLOV5环境配置
51 single chip microcomputer controls nixie tube display
flink sql怎么持久化?
Wechat applet ordering system graduation design of applet completion works (2) applet function
【sklearn】sklearn.preprocessing.LabelEncoder
Solve the syntaxerror: unexpected end of JSON input
A picture to quickly understand envoyfilter in istio
[deep learning] overview | the latest progress of deep learning
Illustration leetcode - 1184. Distance between bus stops (difficulty: simple)
JS small game source code magic tower breakthrough Download