C语言--------关键字

c语言提供的关键字,不能自己创建
变量名不能是关键字

常见关键字:
auto  break  case  char  const  continue  default  do 
fouble  else  enum  extern  float  for  if  int  long 
register  return  short  signed  sizeof  static  struct  switch  typedef  union  unsigned  void  volatile  while

auto:
auto 是自动的,每个局部变量都是auto修饰的,上代码:

int main(){
    (auto)int a = 10; //a是自动创建, 自动销毁的,称为自动变量,auto省略.
}

do:常用于do while 循环
enum:枚举.
extern: 是用来声明外部符号的
register:寄存器关键字

register int num = 100;
//建议num的值存放在寄存器中,实际放到哪里,由编译器决定

寄存器:计算机中数据可以存储到网盘上(2T),硬盘(500g)上,内存(8g-16g),高速储存cache(几十兆)或者寄存器(更小,寄存器集成在CPU上)中.CPU是中央处理器,所有的计算都是在CPU中进行的,早期计算机都是将数据从内存中读取,在CPU中进行计算,最佳搭档非他两莫属,但是随着技术的发展,CPU的计算速度越来越快,从内存中读取速度却一直在原地踏步,因此完整的计算快慢就主要取决于数据的读取速度.从内存到寄存器存储空间虽然越来越小,但是读取速度越来越快,造价越来越高.大量且频繁被使用的数据,放在寄存器中,可以大大提高效率.编译器一般会自己判断数据是否需要存放到寄存器中,所有register也可以省略.
signed:有符号的. -10
static:静态的.

//修饰局部变量
//修饰全局变量
//修饰函数

修饰局部变量时:使得变量出函数时不被销毁,改变了局部变量的生命周期(本质上是改变了变量的储存类型),但是该变量的作用域不变.
在重复调用函数的时候,函数里的static int a语句不会重复执行,没有该行代码对应的汇编语句,在编译的时候就已经为static静态变量分配了空间了,因此每次调用函数时使用的都是第一次的a
在这里插入图片描述如下代码解释:

# include<stdio.h>
void test()
{
	int a = 1;
	a++;
	printf("%d", a);
}
int main() {
	int i = 0;
	while (i < 10) {
		test();
		i++;
	}
	return 0;
}

在这里插入图片描述

# include<stdio.h>
void test()
{
	static int a = 1;
	a++;
	printf("%d", a);
}
int main() {
	int i = 0;
	while (i < 10) {
		test();
		i++;
	}
	return 0;
}

在这里插入图片描述修饰全局变量时:
在这里插入图片描述

# include<stdio.h>
//extern 声明外部符号的
extern int g_val;
int main()
{
	printf("%d", g_val);
	return 0;
}

在这里插入图片描述全局变量在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量,其改变本质与修饰局部变量不一致.
c语言 -->编译—> 链接—> 可执行文件
修饰函数:
函数是具有外部链接属性的,
在这里插入图片描述

extern int add(int, int);
int main() 
{
	int a = 10;
	int b = 20;
	int sum = add(a, b);
	printf("sum = %d\n", sum); 
	return 0;`
int add(int x, int y)
{
	return x + y;
}

在这里插入图片描述

union:联合体(共用体)
void:无,空
volatile:体现程序员c语言段位的关键字.
注意:define和 include不是关键字,是预处理指令.
#之后的都是预处理指令
define:
define可以可用于定义标识符常量和定义宏

 # define MAX 100           定义标识符常量
 # define ADD(x, y) ((x)+(y))    定义宏
 # include<stdio.h>
# define ADD(x, y) ((x) + (y))
int Add(int x,  int y) {
	return x + y;
}
int main() {
	int x = 1, y = 2;
	printf("%d", ADD(x, y));
	return 0;
}

在这里插入图片描述
ADD是宏名
(x, y)是宏的参数,参数是无类型
((x) + (y))是宏体
代码ADD(x, y)会被宏替换,替换给宏体
宏就是用于替换的,宏和函数是有区别的
typedef :类型重定义(命名).

typedef unsigned int u_int   //给unsifned 起一个别名
u_int num; == unsigned num;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

With Order @!147

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值