C 库 - alignof() 运算符

❮ C 标准库 - <stdalign.h>


C 库 alignof() 运算符为给定数据类型提供对齐要求(以字节为单位)。它表示应如何为该类型的实例分配内存。例如,如果对齐要求为 4,则该类型的对象应放置在 4 的倍数的内存地址上。这确保了高效的内存访问和数据结构的正确对齐。

语法

以下是 C 库 align() 的语法 -

alignof(type)

参数

此函数仅接受一个"type"参数。类型表示为 int、char、float、用户定义结构体、类等。

返回类型

此运算符将数据类型值返回为字节。>

示例 1

以下是使用基本 C 库运算符 alignof() 以字节为单位测量数据类型结果的示例。

#include <stdalign.h>
#include <stddef.h>
#include <stdio.h>
 
int main(void)
{
   printf("The alignment of char = %zu
", alignof(char));
   printf("The alignment of max_align_t = %zu
", alignof(max_align_t));
   printf("alignof(float[10]) = %zu
", alignof(float[10]));
   printf("alignof(struct{char c; int n;}) = %zu
",
            alignof(struct {char c; int n;}));
   return 0;
}

输出

执行上述代码后,我们得到以下结果 -

The alignment of char = 1
The alignment of max_align_t = 16
alignof(float[10]) = 4
alignof(struct{char c; int n;}) = 4

示例 2

在此示例中,我们测量了两种不同类型的字节值,即 max_align_t 和结构体类 (struct)。

#include <stdio.h>
#include <stddef.h>
#include <stdalign.h>

int main(void) {
    printf("Alignment of max_align_t: %zu
", alignof(max_align_t));
    printf("Alignment of struct { char c; int n; }: %zu
", alignof(struct { char c; int n; }));
    return 0;
}

输出

执行上述代码后,我们得到以下结果 -

Alignment of max_align_t: 16
Alignment of struct { char c; int n; }: 4

❮ C 标准库 - <stdalign.h>