C 基础拾遗--看的不多只看一篇

C预处理器和C库

#define

#define由3部分组成。第1部分是#define指令本身。第2部分是选定的缩写,也称为宏。有些宏代表值(如本例),这些宏被称为类对象宏(object-like macro)。宏的名称中不允许有空格,而且必须遵循C变量的命名规则:只能使用字符、数字和下划线(_)字符,而且首字符不能是数字。第3部分(指令行的其余部分)称为替换列表或替换体,一旦预处理器在程序中找到宏的示实例后,就会用替换体代替该宏。
在这里插入图片描述

在#define中使用参数

SQUARE宏的定义如下:
#define SQUARE(X) XX
这里,SQUARE 是宏标识符,SQUARE(X)中的 X 是宏参数,X
X 是替换列表。程序清单 16.2 中出现SQUARE(X)的地方都会被XX替换。这与前面的示例不同,使用该宏时,既可以用X,也可以用其他符号。宏定义中的X由宏调用中的符号代替。因此,SQUARE(2)替换为22,X实际上起到参数的作用。

变参宏:……和_ VA_ARGS _

条件编译

1.#ifdef、#else和#endif指令

#ifdef指令说明,如果预处理器已定义了后面的标识符(MAVIS),则执行#else或#endif指令之前的所有指令并编译所有C代码(先出现哪个指令就执行到哪里)。如果预处理器未定义MAVIS,且有 #else指令,则执行#else和#endif指令之间的所有代码。

#ifndef指令与#ifdef指令的用法类似,也可以和#else、#endif一起使用,但是它们的逻辑相反。

预定义宏

在这里插入图片描述

结构和联合

在C中,使用结构可以把不同类型的值存储在一起。

C提供了两种类型的聚合数据类型,数组和结构。数组是相同类型的元素的集合,它的每个元素是通过下标引用或指针间接访问来选择的。

数组元素可以通过下标访问,这只是因为数组的元素长度相同。但是,在结构中情况并非如此。由于一个结构的成员可能长度不同,所以不能使用下标来访问它们。相反,每个结构成员都有自己的名字,它们是通过名字访问的。

结构

结构声明

结构成员

结构成员的直接访问

结构成员的间接访问

结构的自引用

联合

联合的所有成员引用的是内存中的相同位置。当你想在不同的时刻把不同的东西存储于同一个位置时,就可以使用联合。

字符串和字符串函数

数组和指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值