在 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
格式說明符進行輸出。