C语言总结(一)

本文详细介绍了C语言中常用的关键字,包括`static`、`extern`、`register`、`const`和`volatile`的定义、作用及用法。`static`用于改变变量的生命周期和作用域,`extern`声明外部变量,`register`指定使用寄存器变量以提高访问速度,`const`定义常量,`volatile`防止编译器优化,确保每次访问变量时都从内存中读取。此外,还讲解了结构体、联合体、枚举的构造数据类型以及运算符的优先级。
摘要由CSDN通过智能技术生成

一、面试中常见关键字
1 :static:
定义:改变生命周期,限制作用域,
对于:在函数内部声明为内部静态变量只需要初始化一次。变量类型由auto变成STATIC,使变量存储在静态区延长生命周期至整个程序结束,扩大其作用域为全局可见。
修饰全局变量加STATIC,限制其作用范围,使嘚外部程序不可访问
修饰函数时,也是和全局变量一样,使得外部程序不可访问。
存放空间:静态存储区
生命周期:从定义开始,直到程序运行结束。
作用域:当前文件可见,其他文件不可访问。

2、extern
外部变量声明
修饰变量时,声明这个变量为外部全局变量。可用于变量在本程序外定义或在声明下面被定义声明。
修饰函数时也是一样的。

3、register
寄存器变量
当你的某个数据频繁的被cpu访问时,你可以使用regiater修饰,这样整个变量就会被放在cpu的寄存器里面用以提高访问速率,要注意的是,寄存器变量不可以使用取地址的操作。cpu内部寄存器,没有地址。而且cpu内部寄存器是有限的比如我们的EXYNOS4421卡发班只有好像是40个吧——R0~R15,还有各个模式下的专用寄存器。以及cpsr。所以很多寄存器都有专门的用途。只有少数几个能被用来存放变量,尽量少用,但是改用还是的用。

4、const:
限定修饰符,常用于变量不可被改变的时候。(我们采用const后面的不可以被改变的方法判别)
用法: //在判别过程中不用看数据类型的位置,当它不存在就完事了
指向常量的指针——const int *p; 简化后 const(p)所以p不可以被改变
_______________ int const *p: *p就是指针指向的地址存放的东西,那这个东西不可以变所以它是都是指向常量的指针

2) 常指针——char *const p;简化后 *const§ p不可以被改变说明了,指针存放的地址不可以被改变。而地址里面存放的内容可以被改变。

3) 指向常量的常指针——const char *const pc='a’ :简化后const(*const(p)) p不可以被改变 *p也不可以被改变。地址内容不可以被改变,指向地址的指针也不能被改变

5、volatile:
编译器警告提示字:防止编译器优化:编译器一般都数据都是直接从缓存中读取,但是对于易变的变量,这种做法就比较危险,对数据加上volatile:修饰让编译器从数据的内存地址中去读取数据。
被誉为区分嵌入式程序员和c程序员的最基本方法
在嵌入式的开发中常用于:
1、中断服务程序中的修改的,可被其它程序使用的变量。比如我中断会操作一个全局资源,而其它程序会检测这个资源并使用,如果不加volatile,那么一般编译器会把这个共享资源放在缓存中方便读取,但是我一个中断来了,这个值已经变了,而编译器还是从缓存中读取整个数据。这肯定是不得行的。
2、多任务环境中各任务间共享的资源
3、存储器映射的硬件寄存器通常也要加volatile
——————————————————————————————————————————
二、构造数据类型
1、结构体:
struct 声明结构体变量。

常见声明有:注意区分类型和定义
设计结构体类型的时候,同时取别名
1typedef struct A{
   
	int a;
	int b;
}st_t;
st_t 是一个结构体类型,它实际上是struct A的别名,此时除了struct A可以定义变量外,还可以通过st_t来定义(常用)
2struct A{
   
	int a;
	int b;
}st;
这个st是一个结构体变量,可以通过struct A结构体类型来定义变量
设计结构体类型的时候,同时定义结构体变量
3struct{
   
	int a;
	int b;
}st;
这个st是一个结构体变量,且以后无法在使用结构体来定义变量 (内核使用)
4typedef struct
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值