在 C++ 中,sizeof
是一個運算符,用于計算數據類型或對象所占用的內存大小(以字節為單位)。對于指針類型,sizeof
返回的是指針本身所占用的內存大小,而不是指針所指向的數據類型的大小。對于函數指針,sizeof
返回的是函數指針本身所占用的內存大小。
函數指針是一種特殊的指針類型,用于存儲函數的地址。函數指針可以像普通指針一樣進行算術運算,例如指針加減、指針比較等。但是,函數指針不能直接調用函數,而是需要通過解引用操作(即使用 *
運算符)來調用函數。
下面是一個簡單的示例,展示了 sizeof
運算符在指針和函數指針上的應用:
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
int x = 10;
int y = 20;
// 計算 int 指針的大小
std::cout << "Size of int pointer: " << sizeof(&x) << " bytes" << std::endl;
// 計算函數指針的大小
std::cout << "Size of function pointer: " << sizeof(&add) << " bytes" << std::endl;
return 0;
}
輸出結果:
Size of int pointer: 8 bytes
Size of function pointer: 8 bytes
在這個示例中,sizeof(&x)
計算的是 int
類型變量 x
的地址指針的大小,而 sizeof(&add)
計算的是函數 add
的地址指針的大小。在大多數現代計算機系統中,這兩個值都是 8 字節(這取決于具體的編譯器和硬件架構)。