从C++0基础到C++入门 (第二十五节:指针【所占内存空间】)

目录

[一. 指针所占内存空间](#一. 指针所占内存空间)

[1.1 验证指针大小的代码示例](#1.1 验证指针大小的代码示例)

[1.2 不同系统架构下的差异](#1.2 不同系统架构下的差异)

[1.3 指针大小与类型无关](#1.3 指针大小与类型无关)

[1.4 空指针的大小](#1.4 空指针的大小)

[1.5 多级指针的大小](#1.5 多级指针的大小)

[1.6 实际应用中的注意事项](#1.6 实际应用中的注意事项)


一. 指针所占内存空间

指针在内存中占用的空间大小取决于系统架构和编译环境。

32位系统中指针通常占用4字节,

64位系统中通常占用8字节。这种差异源于CPU寻址能力的差异。

1.1 验证指针大小的代码示例

通过sizeof运算符可以验证指针的大小

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int* pInt;
    double* pDouble;
    char* pChar;

    cout << "int指针大小: " << sizeof(pInt) << endl;
    cout << "double指针大小: " << sizeof(pDouble) << endl;
    cout << "char指针大小: " << sizeof(pChar) << endl;

    return 0;
}

1.2 不同系统架构下的差异

在32位Windows系统上运行上述代码,输出通常为4字节。在64位系统上运行,输出通常为8字节。这与系统的寻址空间直接相关:32位系统使用32位地址(4字节),64位系统使用64位地址(8字节)。

1.3 指针大小与类型无关

无论指针指向何种数据类型(int、double、class等),指针本身的大小是固定的。指针变量存储的是内存地址,而地址的长度由系统架构决定,与指向的数据类型无关。

1.4 空指针的大小

空指针(nullptr)也占用相同的空间:

cpp 复制代码
int* pNull = nullptr;
cout << "空指针大小: " << sizeof(pNull) << endl;

1.5 多级指针的大小

多级指针(如指向指针的指针)同样遵循这个规则:

cpp 复制代码
int** ppInt;
cout << "二级指针大小: " << sizeof(ppInt) << endl;

1.6 实际应用中的注意事项

开发跨平台应用时需要考虑指针大小的差异。涉及指针运算或内存操作时,明确指针大小可以避免潜在问题。在数据结构设计和内存分配策略中,指针大小会影响整体内存占用。

相关推荐
WSSWWWSSW2 小时前
Numpy科学计算与数据分析:Numpy文件操作入门之数组数据的读取和保存
开发语言·python·数据挖掘·数据分析·numpy
啊阿狸不会拉杆3 小时前
《算法导论》第 14 章 - 数据结构的扩张
数据结构·c++·算法·排序算法
Starry_hello world4 小时前
MySql 表的操作
数据库·笔记·mysql
Q741_1474 小时前
如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
开发语言·c++·算法·leetcode·位运算·总结思考
半瓶啤酒一醉方休4 小时前
C# 查询电脑已安装所有软件并打印txt保存到桌面
开发语言·c#
钢铁男儿4 小时前
深入解析C#并行编程:从并行循环到异步编程模式
开发语言·c#
小郝 小郝5 小时前
开启单片机
c语言·单片机·嵌入式硬件·学习·51单片机
使二颗心免于哀伤5 小时前
《设计模式之禅》笔记摘录 - 14.组合模式
笔记·设计模式·组合模式
小杜的生信筆記5 小时前
基于R语言,“上百种机器学习模型”学习教程 | Mime包
开发语言·学习·机器学习·r语言·sci