在 Linux 系统中,sizeof
是一个运算符,用于计算数据类型或对象所占用的内存字节大小
-
基本数据类型:当你使用
sizeof
计算一个基本数据类型(如 int、char、float 等)时,它会返回该类型在当前系统和编译器下所占用的字节数。例如,在 32 位系统上,sizeof(int)
通常返回 4,而在 64 位系统上,sizeof(long)
通常返回 8。 -
指针类型:当你使用
sizeof
计算一个指针类型时,它会返回指针本身所占用的字节数,而不是指针所指向的数据类型的大小。在大多数系统上,指针的大小是固定的,例如在 32 位系统上,所有类型的指针都是 4 字节,而在 64 位系统上,所有类型的指针都是 8 字节。这意味着sizeof(int*)
、sizeof(char*)
和sizeof(void*)
在 32 位系统上都将返回 4,在 64 位系统上都将返回 8。
需要注意的是,sizeof
对于指针类型返回的是指针本身的大小,而不是指针所指向的数据类型的大小。如果你需要计算指针所指向的数据类型的大小,可以使用 sizeof(*pointer)
。例如,如果你有一个 int*
类型的指针,那么 sizeof(*pointer)
将返回 sizeof(int)
。
总之,sizeof
与指针类型的关联主要体现在指针类型的大小是固定的,而与指针所指向的数据类型无关。在 32 位系统上,所有类型的指针都是 4 字节,而在 64 位系统上,所有类型的指针都是 8 字节。