C语言从头学67——学习头文件stddef.h和stdbool.h

在stddef.h头文件中定义了一些数据类型和宏,其中宏包括无参宏和有参宏(有参宏象函数);stdbool 中定义了布尔类型和几个宏,可以用来声明、表示布尔量。

一、stddef.h定义的类型

ptrdiff_t:指针相减运算返回结果的类型

size_t:sizeof字节运算符进行运算返回结果的类型

wchar_t:宽字符类型

二、stddef.h定义的宏

NULL:空指针

offsetof()宏

功能:这是一个有参宏,返回某个属性在Struct结构内部的起始位置。

使用格式:offsetof(参1,参2);

参1:struct结构名

参2:结构中某一属性

返回值:返回Struct结构起始位置到该属性开始间的字节数

说明:由于系统为了字节对齐,可能会在struct结构的属性之间插入空字节。

三、stdbool.h定义的类型、宏

bool、_Bool:布尔类型

true:值为1,表示真

false:值为0,表示假

四、举例程序

cpp 复制代码
#include<stdio.h>
#include<stddef.h>
#include<stdbool.h>
struct test
{
    char a[6];
    int x;
};
bool isBigger(int a, int b) //a>b返回真,a<=b返回假
{
    if (a > b)
    {
        return true;
    }
    else
    {
        return false;
    }
}
int main(void)
{
//一、类型ptrdiff_t、size_t、wchar_t所占字节数
    printf("ptrdiff_t占字节:%zu\n", sizeof(ptrdiff_t));//运行结果:ptrdiff_t占字节:8
    printf("size_t占字节:%zu\n", sizeof(size_t));//运行结果:size_t占字节:8
    printf("wchar_t占字节:%zu\n", sizeof(wchar_t));//运行结果:wchar_t占字节:2
//二、有参宏offsetof的使用
    printf("test中a位于:%zu\n", offsetof(struct test,a));//运行结果:test中a位于:0
    printf("test中x位于:%zu\n", offsetof(struct test, x));//运行结果: test中a位于:8
       //分析:char数组a的位置开始于0没有问题,6个char型元素占6个字节;而x开始于第8字节,
       //也就是说,a[6]多占了2个字节,这两个字节就是为了系统对齐占用。
//三、实验布尔类型
    int x = 4, y = 6;
    bool b = isBigger(4, 6);
    if (b)printf("x大于y\n");
    if (!b)printf("x不大于y\n");//运行结果:x不大于y
    printf("b=false时b的值:%d\n", b);//运行结果:b=false时b的值:0
    getchar();
    return 0;
}
相关推荐
Escalating_xu5 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
阿钱真强道7 小时前
20 嵌入式操作系统 | ubus:把自己的程序状态暴露出去
c语言·进程通信·ubus·ubusd·blobmsg
小小龙学IT9 小时前
三菱 PLC MC 协议(SLMP / QnA 兼容 3E 帧)深度解析:从帧结构到 C++/Go 双语言采集实战
c语言·c++·golang
Logic1019 小时前
C语言/数据结构位运算题解:异或XOR找出游戏速通中的“独特初始能量值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Chen—LSN10 小时前
C语言——⽂件操作(1)
c语言·开发语言·c++·经验分享·笔记·算法·链表
木由里予10 小时前
GDB 使用手册(详细版)
c语言·vscode
Chen—LSN11 小时前
C语言——文件操作(2)
c语言·开发语言·c++·经验分享·笔记·算法·c#
Escalating_xu11 小时前
【C 语言】深入理解指针(2):数组名、数组传参、二级指针与指针数组
java·c语言·开发语言
心中有你021413 小时前
C语言实现文件异或加密与RLE压缩算法
c语言·开发语言
阿钱真强道13 小时前
18 嵌入式操作系统 | uloop 定时器:周期任务与网络上报
c语言·定时器·周期任务·uloop