C 标准库 stddef.h

  • Post category:C

C 标准库 stddef.h 包含了一些常用的类型定义和宏定义。常见的定义包括了类型的大小、指针操作和数组元素操作等。

下面是 stddef.h 常用定义的详细使用说明:

size_t 类型

size_t 类型是 C 标准库中定义的一个无符号整数类型,通常用于表示内存块的大小或数组元素的个数。

#include <stddef.h>

size_t strlen(const char *s);
void *malloc(size_t size);

在上述代码中,strlen 函数和 malloc 函数都需要传入 size_t 类型的参数,其中 strlen 函数计算指定字符串中的字符个数,而 malloc 函数分配指定大小的内存块。

ptrdiff_t 类型

ptrdiff_t 类型是 C 标准库中定义的一个有符号整数类型,通常用于作为指针中两个指针之差的类型。

#include <stddef.h>

ptrdiff_t ptrdiff(const void *p1, const void *p2);

在上述代码中,ptrdiff 函数用于计算两个指针之间的字节数,返回值为 ptrdiff_t 类型的整数。

NULL

NULL 宏定义为指针类型的一个空指针常量,通常用于表示未初始化的指针或者没有指向任何有效对象的指针。

#include <stddef.h>

#define NULL ((void *) 0)

在上述代码中,NULL 宏定义为 (void *) 0,即空指针常量。

offsetof

offsetof 宏用于计算结构体中指定成员相对于结构体首地址的偏移量。

#include <stddef.h>

#define offsetof(type, member) ((size_t) &((type *) 0)->member)

在上述代码中,offsetof 宏的实现方法为取一个类型的指针,并将其强制转换成 (type *)0,以此来计算成员偏移量,返回值为 size_t 类型的整数。

综上所述,C 标准库中的 stddef.h 包含了一些常用的类型和宏定义,可以方便地使用指针、数组和结构体等数据类型。