「地表最强」C语言(九)关键字

环境:CLion2021.3;64位macOS Big Sur


「地表最强」C语言(一)基本数据类型
「地表最强」C语言(二)变量和常量
「地表最强」C语言(三)字符串+转义字符+注释
「地表最强」C语言(四)分支语句
「地表最强」C语言(五)循环语句
「地表最强」C语言(六)函数
「地表最强」C语言(七)数组
「地表最强」C语言(八)操作符
「地表最强」C语言(九)关键字
「地表最强」C语言(十)#define定义常量和宏
「地表最强」C语言(十一)指针
「地表最强」C语言(十二)结构体、枚举和联合体
「地表最强」C语言(十三)动态内存管理,含柔性数组
「地表最强」C语言(十四)文件
「地表最强」C语言(十五)程序的环境和预处理
「地表最强」C语言(十六)一些自定义函数和宏
「地表最强」C语言(十七)阅读程序

九、关键字

  • 关键字是C语言提供的,不支持自定义关键字。
  • 关键字不能做变量名
  • 常见关键字:

注意:define和include是预处理指令而非关键字
1.do            2.while            3.for            4.break            5.continue            6.return            7.if            8.else
9.switch      10.case          11.default    12.goto           13.const               14.static          15.enum    16.struct
17.sizeof    18.signed(有符号)              19.unsigned(无符号)                   20.typedef(类型重命名)              
21.union(联合体/共用体)                      22.extern(声明外部符号)             23.register(寄存器)
24.auto(自动创建和销毁,局部变量前都有,只是被省略)                      25.volatile

9.1 register

计算机的数据可以存储到:寄存器、高速缓存器、内存、硬盘、网盘。造价递减,速度递减,存储空间递增。
当有数据需要频繁被使用时,希望放在寄存器中以提升效率,用到此关键字。
目前计算机会自动完成这一过程,因此此关键字意义不大。

9.2 typedef

可理解为起别名:

	typedef unsigned int u_int;//将unsigned int命名为u_int
	unsigned int num = 100;
	u_int num2 = 100;//有line1代码即可通过,否则报错。

9.3 static

首先,操作系统分配给C语言的内存空间被分为栈区(又称堆栈)、堆区、静态区。

  • 栈区:存放局部变量、函数的参数、调用函数时的返回值等临时的变量。变量或函数被调用时创建,调用结束后时自动释放存储单元。
  • 堆区:动态内存分配。运行malloc或new时申请任意内存,需要自己free或delete来释放内存。堆区涉及的函数:malloc、free、realloc、calloc
  • 静态区(数据段):存放全局变量,static修饰的静态变量。内存在编译时就已经分配好,在程序的整个运行期间都存在,程序结束后系统释放内存。

9.3.1 static 修饰局部变量

改变了局部变量的生命周期,本质上是改变了局部变量的存储类型(栈->静态区),注意被static修饰的局部变量的值可以发生变化。

void test() {
	static int a = 1;//存储在静态区,因此每次调用时不会初始化为1,而是保存上一次更改的结果。
	++a;
	printf("%d ", a);
}

int main()
{
	int i = 0;
	while (i < 10) {
		test();
		i++;
	}
	return 0;
}

在这里插入图片描述

9.3.2 static修饰全局变量

使得此全局变量只能在自己所在的源文件内部使用,其他源文件无法使用。
全局变量在其他源文件内部可以使用,是因为其具有外部链接属性,被static修饰后就变成了内部链接属性,其他源文件就无法链接到这个静态的全局变量了。
用static修饰时,直接报错:
在这里插入图片描述
直接报错
取消static修饰,通过:
在这里插入图片描述
在这里插入图片描述

注意在引用其他源文件前,需要使用extern来声明外部符号:
extern int g_val;

9.3.3 static修饰函数

是的函数只能在自己的源文件内部使用,其他源文件无法使用此函数。
本质上与其修饰全局变量一样,将函数的外部链接属性更改为内部链接属性,在此不做演示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值