C-002.c语言的32个关键字

本文详细介绍了C语言中的32个关键字,包括数据类型关键字和流程控制关键字,并对比了C99与C89标准的区别。

(本文是转载百度文库的内容来写的)

C语言中32个关键字详解 

由ANSI标准定义的C语言关键字共32个: 根据关键字的作用,可以将关键字分为数据类型关键字流程控制关键字两大类。


1.数据类型关键字


A基本数据类型(5个)

void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果

char:字符型类型数据,属于整型数据的一种 (占1个字节)

int:整型数据,通常为编译器指定的机器字长(占4个字节)

float:单精度浮点型数据,属于浮点数据的一种(占4个字节)

double:双精度浮点型数据,属于浮点数据的一种(占8个字节)


B类型修饰关键字(4个)

short:修饰int,短整型数据,可省略被修饰的int。

long:修饰int,长整形数据,可省略被修饰的int。

signed:修饰整型数据,有符号数据类型 (基本不用C复杂类型关键字(5个))

unsigned:修饰整型数据,无符号数据类型


C复杂类型关键字(5个)

struct:结构体声明 

union:共用体声明 

enum:枚举声明 

typedef:声明类型别名 

sizeof:得到特定类型或特定类型变量的大小


D存储级别关键字(6个)

auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配 

static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部

register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的

const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变) ---我的理解就是常量

volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值


2.流程控制关键字

A跳转结构(4个)

return:用在函数体中,返回特定值(或者是void值,即不返回值) 

continue:结束当前循环,开始下一轮循环 

break:跳出当前循环或switch结构 

goto:无条件跳转语句


B分支结构(5个)

if:条件语句 else:条件语句否定分支(与if连用) 

switch:开关语句(多重分支语句) 

case:开关语句中的分支标记 

default:开关语句中的“其他”分治,可选。


C循环结构(3个)

for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件

do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件

while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件 以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

 

C99和C89标准对比多了些什么


1、restrict:指针类型修饰符 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。 如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象,memcpy()函数就是restrict指针的一个典型应用示例。C89中memcpy()函数原型如下:

//void *memcpy (void *s1, const void *s2, size_t size); 



如果s1和s2所指向的对象重叠,其操作就是未定义的。memcpy()函数只能用于不重叠的对象。C99中memcpy()函数原型如下:

 

//void *memcpy(void *restrict s1, const void *restrict s2,size_t size);

通过使用restrict修饰s1和s2 变元,可确保它们在该原型中指向不同的对象。


2、inline(内联)关键字

内联函数除了保持结构化和函数式的定义方式外,还能使程序员写出高效率的代码.函数的每次调用与返回都会消耗相当大的系统资源,尤其是当函数调用发生在重复次数很多的循环语句中时.一般情况下,当发生一次函数调用时,变元需要进栈,各种寄存器内存需要保存.当函数返回时,寄存器的内容需要恢复。如果该函数在代码内进行联机扩展,当代码执行时,这些保存和恢复操作旅游活动会再发生,而且函数调用的执行速度也会大大加快。函数的联机扩展会产生较长的代码,所以只应该内联对应用程序性能有显著影响的函数以及长度较短的函数。


3、新增数据类型 _BOOL

值是0或1。C99中增加了用来定义bool、true以及false宏的头文件夹<stdbool.h>,以便程序员能够编写同时兼容于C与C++的应用程序。在编写新的应用程序时,应该使用 <stdbool.h>头文件中的bool宏。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值