温馨提示×

c++ sizeof指针在结构体和类中的应用

c++
小樊
82
2024-09-24 22:56:17
栏目: 编程语言

在C++中,sizeof运算符用于获取数据类型或对象所占用的内存大小(以字节为单位)。对于指针,sizeof返回的是指针本身所占用的内存大小,而不是它所指向的数据类型的大小。

sizeof应用于结构体或类时,它返回的是整个结构体或类实例所占用的内存大小,而不是结构体或类中某个成员变量的大小。这是因为结构体和类是复合数据类型,它们包含了成员变量、函数指针等其他成员。sizeof计算的是整个结构体或类的总内存占用。

以下是一个简单的例子,展示了sizeof在结构体和类中的应用:

#include <iostream>

struct MyStruct {
    int a;
    float b;
};

class MyClass {
public:
    int x;
    double y;
    void myFunction() {}
};

int main() {
    std::cout << "Size of MyStruct: " << sizeof(MyStruct) << " bytes" << std::endl;
    std::cout << "Size of MyClass: " << sizeof(MyClass) << " bytes" << std::endl;

    // 注意:以下代码不会报错,但输出的结果可能不是预期的
    // 因为sizeof计算的是指针本身的大小,而不是它所指向的数据类型的大小
    int* ptr = new int;
    std::cout << "Size of int*: " << sizeof(ptr) << " bytes" << std::endl;

    delete ptr;

    return 0;
}

需要注意的是,由于sizeof返回的是指针本身的大小,因此在不同的系统和编译器上,指针的大小可能会有所不同。在32位系统上,指针大小通常为4字节;在64位系统上,指针大小通常为8字节。

0