溫馨提示×

Linux中sizeof對于指針的計算規(guī)則是什么

小樊
83
2024-09-13 08:26:12
欄目: 智能運維

在 Linux 系統(tǒng)中,sizeof 是一個運算符,用于計算數(shù)據(jù)類型或?qū)ο笏加玫膬?nèi)存字節(jié)數(shù)

對于指針變量,sizeof 計算的是指針本身所占用的內(nèi)存大小,而不是指針所指向的數(shù)據(jù)類型的大小。在 32 位系統(tǒng)中,所有類型的指針大小都是 4 字節(jié)(32 位);而在 64 位系統(tǒng)中,所有類型的指針大小都是 8 字節(jié)(64 位)。這是因為指針本身只是一個內(nèi)存地址,其大小與所指向的數(shù)據(jù)類型無關。

例如:

#include<stdio.h>

int main() {
    int a = 10;
    int *ptr = &a;

    printf("Size of int: %zu\n", sizeof(int));
    printf("Size of pointer to int: %zu\n", sizeof(ptr));

    return 0;
}

在 32 位系統(tǒng)上運行此程序,輸出將是:

Size of int: 4
Size of pointer to int: 4

在 64 位系統(tǒng)上運行此程序,輸出將是:

Size of int: 4
Size of pointer to int: 8

請注意,這里的 sizeof 返回的是 size_t 類型的值,因此使用 %zu 格式說明符進行輸出。

0