我的名字天下无二
C语言中有一些预先定义的字符串,他们本身被赋予了自身的功能。并且我们在定义变量的时候,不能去抢他们的名字来用。他们就是今天的主角:关键字
首先我们简单的和这些关键字见见面(被高亮的关键字是今天要介绍的)
这其中有大家熟知的数据类型:int,char,float,double…
也有控制语句用到的:if,for,do…
还有一些就是今天主要介绍的关键字。
至于还有一些新增的关键字,以上表格未曾提到,大家如果想去了解,可自行查找。
个别术语介绍(可先跳过,后文如若遇到不懂,可回来了解)
自动变量:指的是局部作用域变量,具体来说即是在控制流进入变量作用域时系统自动为其分配存空间, 并在离开作用域时释放空间的一类变量
auto
auto:声明自动变量,一般都省略
代码如下:
int a=0;
//上下两个变量其实相同,只不过上面省略了auto
auto int a=0;
register
register:声明寄存器变量
signed和unsigned
signed:有符号的(一般定义常量默认为signed)-------可以存储正数和负数
signed int a=10; //一般默认为signed,故只要写成:int a=10;
unsigned float=-75.3------>错误定义
float=-75.3------>正确定义
signed float=-75.3------->正确定义
typedef
typedef:类型重定义-------一般对于太过复杂的数据类型,可以重新定义一个简单的或有辨识度的使用
unsigned long int a=10; //数据类型过于复杂,可以使用typedef重新定义
typedef unsigned long int u_l_int;
u_l_int a=10; //与unsigned long int a=10等价
extern
extern:用在变量或者函数的声明前,用来说此变量/函数是在别处定义的,要在此处引用
代码如下:
先在源文件中创建项目名为:main.c
#inlcude <stdio.h>
extern int a;
extern int Add(int x,int y);
int main()
{
printf("%d\n",a);
printf("%d\n",Add(3,2));
}
再在源文件中创建项目名为:test.c-------作为全局变量,函数定义的文件
int a=10;//全局变量
int Add(int x,int y)//
{
return x+y;//函数定义
}
结果会输出10,5
拓展:
变量的声明有两种情况
1. 一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
2. 另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。
例如:extern int a 其中变量 a 可以在别的文件中定义的。
extern int i; //声明,不是定义
int i; //声明,也是定义
static
static:声明静态变量
解释1,代码如下:
#include <stdio.h>
void Add(int x)
{
static int a=2;
a++;
printf("%d ",x+a);
}
int main()
{
int i=0;
for(i=0;i<3;i++)
{
Add(1);
}
return 0;
}
结果是4 5 6,大家知道int a=2是一个自动变量,在他作用域结束后,空间就会释放掉,a的值不能保存。
而加上static改变了他的生命周期,使他在整个项目结束前的一直存在,所以a的值会不断迭代
解释2,3,代码如下:(引用extern的内容,大家可以自行对比)
先在源文件中创建项目名为:main.c
##inlcude <stdio.h>
extern int a;
extern int Add(int x,int y);
int main()
{
printf("%d\n",a);
printf("%d\n",Add(3,2));
}
再在源文件中创建项目名为:test.c-------作为全局变量,函数定义的文件
static int a=10;//全局变量
static int Add(int x,int y)
{
return x+y;//函数定义
}
产生结果如下:
最后注意:#define和#include不是关键字,是预处理指令
以上介绍了一些关键字,但是并没有完全介绍清楚,还有疑问的大家可以自己查询。至于剩下的一些关键字,我将会在以后章节为大家详细介绍。
希望大家稀饭啦(^ _ ^)/