在 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 字节(这取决于具体的编译器和硬件架构)。