关键字--C语言本身内置的,非个人创建
break; //理解为跳出、打断的意思
case; //理解为”情况“
const; //常属性 常量的意思
enum; //枚举
struct; //结构体
union; //联合体
extern; //申明外部符号
go to; //跳转
register; //寄存器关键词
signed; //有符号的
unsigned; //无符号的
static; //静态
typedef; //类型重命名或者类型定义
volatile; //变量
tips:定义变量时,不能定义为关键字。
同时,变量名必须是字母、数字、下划线组成,变量名不能以数字开头。
典型关键字详解:
typedef--类型定义
#include <stdio.h>
typedef unsigned int uint; //将unsigned int数据类型命名为uint类型;
int main()
{
unsigned int num = 1;
uint num2 = 5;
printf("%u %u", num, num2); // 使用了%u格式符来打印无符号整数
return 0;
}
static
在C语言中,static是用来修饰变量和函数的;
1.修饰局部变量;称为静态局部变量
2.修饰全局变量;称为静态全局变量
3.修饰函数;称为静态函数
1.修饰局部变量: static修饰局部变量的时候,局部变量出了作用域,是不销毁的。所以从本质上来说,static修饰局部变量的时候改变了变量的存放位置。
#include <stdio.h>
void test()
{
//static使变量a的存放位置放到了静态区,从而不被销毁
static int a = 1; //如果加上static则打印的是2-11,不加static则打印的是2222222222
a++;
printf("%d\n", a);
}
void main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
2.修饰全局变量;
static修饰全局变量的时候,此全局变量的外部链接属性就变成了内部链接属性。其他源文件不能再通过extern关键字来引用此静态全局变量。
static int age = 0; //此全局变量变为内部链接属性,不能再被外部源文件引用
3.修饰函数时和修饰全局变量一样,一旦使用static修饰函数,此函数就不再具有外部链接属性,变成了内部链接属性,其他的源文件不能再通过extern来引用此函数
声明外部符号--extern
例:extern int age; //声明外部变量age,这个age来自另一个文件。
register--申明寄存器变量
此关键字的意义:建议将此关键字申请的变量放在寄存器中,但是不能保证绝对会放到寄存器里面去,只是说优先存放。
#define--定义常量和宏
//define定义标识符常量
#define NUM 100 //定义NUM的值为100;
//define定义宏 (宏是有参数的)
//ADD是宏名,(x,y)是宏的参数;参数是无类型,x+y是宏体
#define ADD(x,y) (x)+(y)
//申明函数。 可以看出来函数和宏还是有区别的
int Add(int x, int y)
{
return x + y;
}
int main()
{
printf("%d\n",NUM);
int n = NUM;
printf("%d\n", n);
int arr[NUM] = { 0 }; //由于define定义的是标识符常量所以可以放在数组长度中
int a = 10;
int b = 20;
int c = ADD(a, b); //给宏传参数
printf("%d\n", c);
return 0;
}