c++ sizeof指针与函数指针的关系

avatar
作者
筋斗云
阅读量:0

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!