C语言简洁、紧凑,使用方便、灵活。ANSI C标准C语言共有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
关键字(keyword)属于保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。经过预处理后,关键字从预处理记号(preprocessing-token)中区别出来,剩下的标识符作为记号(token),用于声明对象、函数、类型、命名空间等。不能声明与关键字同名的标识符。
前面几篇也分别介绍了其他语言的关键字,详细请参考专栏
C进阶:https://blog.csdn.net/zhouruifu2015/category_5695139
本篇将分享下对C语言关键字的一个总结,分别逐个介绍下这些关键字的作用,特性和使用方法及代码示例,下一篇将介绍下C++的关键字。
C语言一共提供了44个关键字,分别如下:
auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,inline,long,register,restrict,return,short,signed,sizeof,static,struct,switch,typedef,unsigned,union,void,volatile,while,_Bool,_Complex,_Imaginary,_Alignas,_Alignof,_Atomic,_Static_assert,_Noreturn,_Thread_local,_Generic
其中,ANSI C一共只有32个关键字,而1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字:inline、restrict、_Bool、_Complex、_Imaginary,_Bool和_Complex是C语言中常用的关键字,它们分别用于定义布尔类型的变量和定义复数类型的变量。
2011年12月8日,ISO发布C语言的新标准C11,该标准新增了7个C语言关键字:_Alignas、_Alignof、_Atomic、_Static_assert、_Noreturn、_Thread_local、_Generic它们分别用于指定变量或类型的对齐方式、获取变量或类型的对齐方式、定义原子类型的变量、在编译时检查条件、告诉编译器一个函数不会返回、定义线程局部变量和实现泛型编程。
C语言是一种广泛使用的编程语言,它具有丰富的关键字,其中包括auto、break、case和char。这些关键字在C语言中发挥着重要的作用,下面我们来详细介绍一下它们的作用、特性和使用方法。
C进阶:https://blog.csdn.net/zhouruifu2015/category_5695139
auto是C语言中的一个关键字,它用于定义自动变量。自动变量是指在函数内部定义的变量,它们的作用域仅限于函数内部。当函数执行结束后,自动变量的内存空间会被释放,变量的值也会被销毁。
auto关键字在C语言中是可选的,如果不使用auto关键字定义变量,则默认为自动变量。例如:
```
int main()
{
int a = 10; // 声明自动变量a
auto int b = 20; // 声明自动变量b
return 0;
}
```
break是C语言中的一个关键字,它用于跳出循环语句。当程序执行到break语句时,循环语句会立即终止,程序会跳出循环,并继续执行下一条语句。break通常用于在循环中满足某个条件时跳出循环,例如:
```
int main()
{
int i;
for(i = 0; i < 10; i++)
{
if(i == 5)
{
break; // 当i等于5时跳出循环
}
printf("%d\n", i);
}
return 0;
}
```
case是C语言中的一个关键字,它用于在switch语句中判断不同的情况。在switch语句中,程序会根据表达式的值跳转到相应的case语句处执行。如果表达式的值与任何一个case语句的值相等,则执行该case语句中的代码。例如:
```
int main()
{
int a = 2;
switch(a)
{
case 1:
printf("a = 1\n");
break;
case 2:
printf("a = 2\n");
break;
case 3:
printf("a = 3\n");
break;
default:
printf("a is not 1, 2 or 3\n");
break;
}
return 0;
}
```
char是C语言中的一个关键字,它用于定义字符类型变量。在C语言中,字符类型变量是用单引号括起来的单个字符,例如:
```
char c = 'a';
```
char类型变量通常用于存储ASCII码表示的字符,也可以用于存储整数类型的数据。在C语言中,char类型变量的大小为1字节,取值范围为-128到127。
const是C语言中的一个关键字,它用于定义常量。常量是指在程序运行过程中不可修改的值,它们通常用于存储程序中的固定值,例如圆周率、常量字符串等。const关键字定义的常量在程序运行过程中不可修改,这有助于提高程序的可靠性和安全性。
const关键字的使用方法如下:
```
const int a = 10; // 定义一个整型常量a,值为10
const char* str = "hello"; // 定义一个字符串常量str,值为"hello"
```
continue是C语言中的一个关键字,它用于跳过当前循环中的某次迭代。当程序执行到continue语句时,循环会立即进入下一次迭代,跳过当前迭代中continue语句后面的代码。continue通常用于在循环中满足某个条件时跳过当前迭代,例如:
```
int main()
{
int i;
for(i = 0; i < 10; i++)
{
if(i == 5)
{
continue; // 当i等于5时跳过当前迭代
}
printf("%d\n", i);
}
return 0;
}
```
default是C语言中的一个关键字,它用于在switch语句中定义默认情况。在switch语句中,程序会根据表达式的值跳转到相应的case语句处执行。如果表达式的值与任何一个case语句的值都不相等,则执行default语句中的代码。例如:
```
int main()
{
int a = 4;
switch(a)
{
case 1:
printf("a = 1\n");
break;
case 2:
printf("a = 2\n");
break;
case 3:
printf("a = 3\n");
break;
default:
printf("a is not 1, 2 or 3\n");
break;
}
return 0;
}
```
do是C语言中的一个关键字,它用于定义do-while循环。do-while循环是一种先执行循环体,再判断循环条件的循环结构。在do-while循环中,循环体至少会执行一次。例如:
```
int main()
{
int i = 0;
do
{
printf("%d\n", i);
i++;
} while(i < 10);
return 0;
}
```
double是C语言中的一个关键字,它用于定义双精度浮点数。双精度浮点数是指在内存中占用8个字节的浮点数,它的精度比单精度浮点数更高,可以表示更大范围的数值。double关键字定义的变量可以存储双精度浮点数。例如:
```
double a = 3.14159265358979323846; // 定义一个双精度浮点数a,值为圆周率
```
else是C语言中的一个关键字,它用于在if语句中定义条件不成立时的执行代码块。当if语句的条件不成立时,程序会执行else语句中的代码。例如:
```
int main()
{
int a = 10;
if(a > 20)
{
printf("a is greater than 20\n");
}
else
{
printf("a is less than or equal to 20\n");
}
return 0;
}
```
enum是C语言中的一个关键字,它用于定义枚举类型。枚举类型是一种用户自定义的类型,它可以列举出所有可能的取值。枚举类型通常用于定义程序中的常量,例如颜色、方向等。enum关键字定义的枚举类型可以用于定义枚举变量。例如:
```
enum color {red, green, blue}; // 定义一个颜色枚举类型
enum color c = red; // 定义一个颜色枚举变量c,值为red
```
extern是C语言中的一个关键字,它用于声明外部变量。外部变量是指在其他文件中定义的变量,使用extern关键字可以在当前文件中引用这些变量。extern关键字常用于在多个文件中共享变量。例如:
在file1.c文件中定义一个变量a:
```
int a = 10;
```
在file2.c文件中引用变量a:
```
extern int a; // 声明变量a为外部变量
printf("%d\n", a); // 输出变量a的值
```
float是C语言中的一个关键字,它用于定义单精度浮点数。单精度浮点数是指在内存中占用4个字节的浮点数,它可以表示一定范围内的小数。float关键字定义的变量可以存储单精度浮点数。例如:
```
float a = 3.14; // 定义一个单精度浮点数a,值为3.14
```
for是C语言中的一个关键字,它用于定义循环语句。for语句通常用于执行一定次数的循环。for语句由三个部分组成:循环变量初始化、循环条件和循环变量更新。例如:
```
int main()
{
int i;
for(i = 0; i < 10; i++)
{
printf("%d\n", i);
}
return 0;
}
```
goto是C语言中的一个关键字,它用于跳转到程序中的指定位置。goto语句可以用于跳过某些代码或者在程序中实现条件跳转。但是,过度使用goto语句会使程序变得难以理解和维护,因此在编写程序时应尽量避免使用goto语句。例如:
```
int main()
{
int i = 0;
loop:
printf("%d\n", i);
i++;
if(i < 10)
{
goto loop;
}
return 0;
}
```
if是C语言中的一个关键字,它用于定义条件语句。if语句通常用于根据条件执行不同的代码块。if语句可以与else语句结合使用,实现更复杂的条件判断。例如:
```
int main()
{
int a = 10;
if(a > 20)
{
printf("a is greater than 20\n");
}
else if(a > 10)
{
printf("a is greater than 10 and less than or equal to 20\n");
}
else
{
printf("a is less than or equal to 10\n");
}
return 0;
}
```
int是C语言中的一个关键字,它用于定义整型变量。整型变量是指在内存中占用4个字节的变量,它可以存储整数值。int关键字定义的变量可以存储整型值。例如:
```
int a = 10; // 定义一个整型变量a,值为10
```
inline是C语言中的一个关键字,它用于定义内联函数。内联函数是一种特殊的函数,它的代码会被直接插入到调用它的代码中,从而避免了函数调用的开销。inline关键字定义的函数可以被编译器优化为内联函数。例如:
```
inline int add(int a, int b)
{
return a + b;
}
```
long是C语言中的一个关键字,它用于定义长整型变量。长整型变量是指在内存中占用8个字节的变量,它可以存储较大的整数值。long关键字定义的变量可以存储长整型值。例如:
```
long a = 1234567890; // 定义一个长整型变量a,值为1234567890
```
register是C语言中的一个关键字,它用于定义寄存器变量。寄存器变量是指在CPU寄存器中存储的变量,它可以更快地访问和处理。register关键字定义的变量可以存储在寄存器中,但是编译器可以选择不将变量存储在寄存器中。例如:
```
register int a = 10; // 定义一个寄存器变量a,值为10
```
restrict是C语言中的一个关键字,它用于指定指针所指向的内存区域是唯一的。唯一性指的是,该指针是访问该内存区域的唯一途径,不会有其他指针也指向该内存区域。这样可以帮助编译器进行更好的优化。restrict关键字只能用于指针类型。例如:
```
void func(int* restrict a, int* restrict b)
{
*a = 10;
*b = 20;
}
```
return是C语言中的一个关键字,它用于从函数中返回值。在函数执行过程中,如果遇到return语句,函数就会立即返回,并将指定的值作为返回值。return关键字只能用于函数中。例如:
```
int add(int a, int b)
{
return a + b;
}
```
short是C语言中的一个关键字,它用于定义短整型变量。短整型变量是指在内存中占用2个字节的变量,它可以存储较小的整数值。short关键字定义的变量可以存储短整型值。例如:
```
short a = 10; // 定义一个短整型变量a,值为10
```
signed是C语言中的一个关键字,它用于定义有符号整型变量。有符号整型变量可以存储正数、负数和零。signed关键字定义的变量可以存储有符号整型值。例如:
```
signed int a = -10; // 定义一个有符号整型变量a,值为-10
```
sizeof是C语言中的一个关键字,它用于计算数据类型或变量所占用的字节数。sizeof关键字可以用于任何数据类型或变量,包括基本数据类型、数组、结构体等。例如:
```
int a = 10;
size_t size = sizeof(a); // 计算int类型变量a所占用的字节数
```
static是C语言中的一个关键字,它用于定义静态变量或函数。静态变量是指在程序运行期间一直存在的变量,它可以在函数内部或外部定义。静态函数是指只能在当前文件中使用的函数,它不会被其他文件所访问。static关键字只能用于变量或函数的定义中。例如:
```
void func()
{
static int count = 0; // 定义一个静态变量count
count++;
printf("count: %d\n", count);
}
static void func2() // 定义一个静态函数func2
{
printf("This is a static function.\n");
}
```
struct是C语言中的一个关键字,它用于定义结构体类型。结构体是一种用户自定义的数据类型,它可以包含多个不同类型的成员变量,这些成员变量可以通过点号(.)访问。struct关键字只能用于结构体类型的定义中。例如:
```
struct student
{
char name[20];
int age;
float score;
};
struct student s = {"Tom", 18, 90.5}; // 定义一个结构体变量s
printf("Name: %s, Age: %d, Score: %.2f\n", s.name, s.age, s.score);
```
switch是C语言中的一个关键字,它用于编写多分支的选择结构。switch语句中的表达式会被依次与每个case语句中的常量进行比较,如果匹配成功,则执行该case语句中的代码。如果所有的case语句都不匹配,则执行default语句中的代码。switch关键字只能用于switch语句中。例如:
```
int a = 2;
switch(a)
{
case 1:
printf("a is 1.\n");
break;
case 2:
printf("a is 2.\n");
break;
default:
printf("a is not 1 or 2.\n");
break;
}
```
typedef是C语言中的一个关键字,它用于定义新的数据类型。typedef可以将任何已有的数据类型定义为一个新的数据类型,这样可以使程序更加易读、易维护。typedef关键字只能用于数据类型的定义中。例如:
```
typedef int Integer; // 定义一个新的数据类型Integer,它是int的别名
Integer a = 10;
```
unsigned是C语言中的一个关键字,它用于定义无符号类型的变量。无符号类型的变量只能取非负整数值,它们不会被解释为负数。unsigned关键字只能用于变量的定义中。例如:
```
unsigned int a = 10; // 定义一个无符号整型变量a
```
union是C语言中的一个关键字,它用于定义共用体类型。共用体是一种特殊的数据类型,它可以存储不同类型的数据,但同一时间只能存储其中的一种数据类型。共用体的成员变量共享同一块内存空间,它们的值会相互影响。union关键字只能用于共用体类型的定义中。例如:
```
union data
{
int i;
float f;
char str[20];
};
union data d;
d.i = 10;
printf("i = %d, f = %f, str = %s\n", d.i, d.f, d.str);
d.f = 3.14;
printf("i = %d, f = %f, str = %s\n", d.i, d.f, d.str);
```
void是C语言中的一个关键字,它用于表示无类型。void类型的指针可以指向任何类型的数据,但它不能被解引用。void关键字可以用于函数的返回类型、函数的参数类型和指针类型的定义中。例如:
```
void func(void); // 定义一个返回类型为void、无参数的函数
void* ptr; // 定义一个void类型的指针
int a = 10;
ptr = &a;
```
volatile是C语言中的一个关键字,它用于告诉编译器一个变量是易变的。这意味着该变量的值可以在程序执行期间随时发生变化,因此编译器不能对该变量进行优化。volatile关键字可以用于变量的定义中。例如:
```
volatile int a = 10; // 定义一个易变的整型变量a
```
while是C语言中的一个关键字,它用于实现循环结构。while循环会在循环条件为真的情况下重复执行循环体中的代码,直到循环条件为假为止。while关键字只能用于循环语句中。例如:
```
int i = 0;
while(i < 10)
{
printf("%d\n", i);
i++;
}
```
_Bool是C语言中的一个关键字,它用于定义布尔类型的变量。布尔类型的变量只能取true或false两个值。_Bool关键字可以用于变量的定义中。例如:
```
_Bool b = true; // 定义一个布尔类型的变量b
```
_Complex是C语言中的一个关键字,它用于定义复数类型的变量。复数类型的变量包含实部和虚部两个部分,它们可以进行加、减、乘、除等运算。_Complex关键字可以用于变量的定义中。例如:
```
_Complex double c = 3.0 + 4.0i; // 定义一个复数类型的变量c
```
_Imaginary是C语言中的一个关键字,它用于定义虚数类型的变量。虚数类型的变量包含实部和虚部两个部分,但与_Complex类型不同的是,_Imaginary类型的变量只有虚部,实部为0。_Imaginary关键字可以用于变量的定义中。例如:
```
_Imaginary double ci = 3.0i; // 定义一个虚数类型的变量ci
```
_Alignas是C语言中的一个关键字,它用于指定变量或类型的对齐方式。对齐方式是指变量在内存中的存储位置。_Alignas关键字可以用于变量或类型的定义中。例如:
```
_Alignas(16) int a; // 定义一个对齐方式为16字节的整型变量a
```
_Alignof是C语言中的一个关键字,它用于获取变量或类型的对齐方式。_Alignof关键字可以用于变量或类型的定义中。例如:
```
int a;
printf("a的对齐方式为%d字节\n", _Alignof(int)); // 输出a的对齐方式
```
_Atomic是C语言中的一个关键字,它用于定义原子类型的变量。原子类型的变量可以保证在多线程环境下的原子性,即对该变量的读写操作是原子的。_Atomic关键字可以用于变量的定义中。例如:
```
_Atomic int a; // 定义一个原子类型的整型变量a
```
_Static_assert是C语言中的一个关键字,它用于在编译时检查某个条件是否成立。如果条件不成立,编译器会在编译时报错。_Static_assert关键字可以用于函数内或函数外的任何地方。例如:
```
_Static_assert(sizeof(int) == 4, "int类型必须为4字节"); // 检查int类型是否为4字节
```
_Noreturn是C语言中的一个关键字,它用于告诉编译器一个函数不会返回。这在一些特殊情况下非常有用,比如在函数中调用exit函数或者死循环。_Noreturn关键字可以用于函数的定义中。例如:
```
_Noreturn void die(void) {
exit(1); // die函数不会返回
}
```
_Thread_local是C语言中的一个关键字,它用于定义线程局部变量。线程局部变量是指每个线程都有自己独立的变量副本,不同线程之间的变量互不干扰。_Thread_local关键字可以用于变量的定义中。例如:
```
_Thread_local int a; // 定义一个线程局部变量a
```
_Generic是C语言中的一个关键字,它用于实现泛型编程。泛型编程是指编写与数据类型无关的代码,可以接受不同类型的数据作为参数。_Generic关键字可以用于函数的定义中。例如:
```
#define print(x) _Generic((x), \
int: printf("%d", x), \
double: printf("%f", x), \
char*: printf("%s", x) \
)
print(10); // 输出10
print(3.14); // 输出3.14
print("hello"); // 输出hello
```
_Static_assert、_Noreturn、_Thread_local和_Generic是C语言中常用的关键字,它们分别用于在编译时检查条件、告诉编译器一个函数不会返回、定义线程局部变量和实现泛型编程。
_Imaginary、_Alignas、_Alignof和_Atomic是C语言中常用的关键字,它们分别用于定义虚数类型的变量、指定变量或类型的对齐方式、获取变量或类型的对齐方式和定义原子类型的变量。
volatile、while、_Bool和_Complex是C语言中常用的关键字,它们分别用于告诉编译器一个变量是易变的、实现循环结构、定义布尔类型的变量和定义复数类型的变量。
typedef、unsigned、union和void是C语言中常用的关键字,它们分别用于定义新的数据类型、定义无符号类型的变量、定义共用体类型和表示无类型。
sizeof、static、struct和switch是C语言中常用的关键字,它们分别用于计算数据类型或变量所占用的字节数、定义静态变量或函数、定义结构体类型和编写多分支的选择结构。
restrict、return、short和signed是C语言中常用的关键字,它们分别用于指定指针所指向的内存区域是唯一的、从函数中返回值、定义短整型变量和定义有符号整型变量。
int、inline、long和register是C语言中常用的关键字,它们分别用于定义整型变量、定义内联函数、定义长整型变量和定义寄存器变量。
float、for、goto和if是C语言中常用的关键字,它们分别用于定义单精度浮点数、定义循环语句、跳转到程序中指定位置和定义条件语句。
double、else、enum和extern是C语言中常用的关键字,它们分别用于定义双精度浮点数、在if语句中定义条件不成立时的执行代码块、定义枚举类型和声明外部变量。
熟练掌握这些关键字的使用方法对于编写高效、可靠的C语言程序非常重要。
C进阶:https://blog.csdn.net/zhouruifu2015/category_5695139
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q