C 庫 - alignof() 運算子



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\n", alignof(char));
   printf("The alignment of max_align_t = %zu\n", alignof(max_align_t));
   printf("alignof(float[10]) = %zu\n", alignof(float[10]));
   printf("alignof(struct{char c; int n;}) = %zu\n",
            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\n", alignof(max_align_t));
    printf("Alignment of struct { char c; int n; }: %zu\n", alignof(struct { char c; int n; }));
    return 0;
}

輸出

執行上述程式碼後,我們將得到以下結果:

Alignment of max_align_t: 16
Alignment of struct { char c; int n; }: 4
c_library_stdalign_h.htm
廣告
© . All rights reserved.