c语言可变参数函数宽字节实现,C语言个关键字详解(15页)-原创力文档

C 语 言 中

32

个关键字详

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

1 数据类型关键字

A 基本数据类型( 5 个)

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

char :字符型类型数据,属于整型数据的一种

int :整型数据,通常为编译器指定的机器字长

float :单精度浮点型数据,属于浮点数据的一种

double :双精度浮点型数据,属于浮点数据的一种

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

short :修饰 int ,短整型数据,可省略被修饰的 int long :修饰 int ,长整形数据,可省略被修饰的 int signed :修饰整型数据,有符号数据类型 unsigned :修饰整型数据,无符号数据类型

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

struct :结构体声明

union :共用体声明

enum枚举声明

typedef :声明类型别名

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

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

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

static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部 register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数 形参,建议编译器通过寄存器而不是堆栈传递参数

extern :指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外 文件声明的韵蟮囊桓觥耙谩

con st :与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 循环结构, do1while(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,constvoid*s2,size_tsize);

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

的对象。C99中memcpy()函数原型如下: 代码:

void*memcpy(void*restricts1,constvoid*restricts2,size_tsize);

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

2、inline (内联)关键字

内联函数除了保持结构化和函数式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值