如何理解c++中sizeof指針的含義

c++
小樊
81
2024-09-24 22:49:15

在 C++ 中,sizeof 是一個(gè)運(yùn)算符,用于計(jì)算數(shù)據(jù)類型或?qū)ο笏加玫膬?nèi)存大?。ㄒ宰止?jié)為單位)。對(duì)于指針變量,sizeof 返回的是指針本身所占用的內(nèi)存大小,而不是指針?biāo)赶虻臄?shù)據(jù)類型的大小。

在大多數(shù)現(xiàn)代計(jì)算機(jī)系統(tǒng)中,所有類型的指針都占用相同的內(nèi)存大小,通常是 4 字節(jié)(32 位系統(tǒng))或 8 字節(jié)(64 位系統(tǒng))。這意味著,無(wú)論指針指向哪種數(shù)據(jù)類型(如 int、float、double 等),sizeof 指針的結(jié)果都是相同的。

例如,以下代碼展示了 sizeof 指針在不同數(shù)據(jù)類型上的用法:

#include <iostream>

int main() {
    int a = 10;
    float b = 2.0f;
    double c = 3.14;

    int* int_ptr = &a;
    float* float_ptr = &b;
    double* double_ptr = &c;

    std::cout << "Size of int pointer: " << sizeof int_ptr << " byte(s)" << std::endl;
    std::cout << "Size of float pointer: " << sizeof float_ptr << " byte(s)" << std::endl;
    std::cout << "Size of double pointer: " << sizeof double_ptr << " byte(s)" << std::endl;

    return 0;
}

輸出結(jié)果將顯示所有指針類型的大小相同:

Size of int pointer: 8 byte(s)
Size of float pointer: 8 byte(s)
Size of double pointer: 8 byte(s)

需要注意的是,sizeof 指針的結(jié)果與指針?biāo)赶虻木唧w數(shù)據(jù)類型無(wú)關(guān),因?yàn)橹羔樦淮鎯?chǔ)內(nèi)存地址,而不關(guān)心地址中存儲(chǔ)的數(shù)據(jù)類型。

0