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

目录

一. 指针所占内存空间

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

1.2 不同系统架构下的差异

1.3 指针大小与类型无关

1.4 空指针的大小

1.5 多级指针的大小

1.6 实际应用中的注意事项


一. 指针所占内存空间

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

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

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

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

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

#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)也占用相同的空间:

int* pNull = nullptr;
cout << "空指针大小: " << sizeof(pNull) << endl;

1.5 多级指针的大小

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

int** ppInt;
cout << "二级指针大小: " << sizeof(ppInt) << endl;

1.6 实际应用中的注意事项

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92546.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows选择文件自动删除及输入框自动打字的解决办法

觉得有帮助麻烦您动动发财的小手点赞、收藏、加关注&#xff0c;感谢&#xff01; 运行环境&#xff1a;windows10 现象&#xff1a;鼠标点击任何文件&#xff0c;上下键选择任何文件都会自动放入回收站并弹警告框&#xff0c;鼠标放入输入框会自动打一串字符&#xff0c;删除…

大模型 MCP服务案例详细讲解

大模型与 MCP(Model Context Protocol)服务器的交互是一个双向、异步、流式的过程,涉及协议解析、函数调用、实时数据交换等关键环节。下面我将详细解释整个交互流程,结合具体示例和时序图说明。 🔄 核心交互流程图 #mermaid-svg-Adxo4FoP4oRzAJdV {font-family:"tr…

MVCC和日志

MVCC是一种并发控制的方法&#xff0c;在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存主要是为了提高数据库并发性能&#xff0c;更好的处理读写冲突&#xff0c;做到即使有读写冲突时&#xff0c;也能做到不加锁&#xff0c;非阻…

Redis源码安装 Failed to configure LOCALE for invalid locale name 报错解决

源码安装之后 报错 Failed to configure LOCALE for invalid locale name原因是redis 8.0 需要配置字符集 只需要在环境变量中添加 LANGen_US.utf8 即可&#xff0c; 在配置之前先查看当前系统中存在哪些字符集 locale -a然后在 /etc/profile 环境变量中添加配置 LANGen_US.ut…

跑酷小游戏2.0

emm&#xff0c;下面是1.0版本的&#xff0c;我问了下AI&#xff0c;出了第四关&#xff0c;按步骤更新吧。其实是我也搞不懂AI在说啥//跑酷游戏C版 #include<bits/stdc.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<tim…

相比于传统的全波分析,特征模分析具有哪些优点

相比传统的全波分析&#xff08;Full-Wave Analysis&#xff0c;直接求解电场/电流分布&#xff09;&#xff0c;特征模分析&#xff08;Characteristic Mode Analysis&#xff0c;CMA&#xff09;的优点主要体现在物理可解释性、设计指导性和计算效率三个方面。1. 物理机理更清…

UE材质World Position 和 Object Position

Object Position 是 物体原点在世界坐标系下的位置 World Position 是 物体上的这个点 在世界坐标系下的位置 Actor Position 是 物体轴点位置 WorldPosition - ObjectPosition 是一个从物体原点&#xff08;pivot&#xff09;指向物体上该点的向量&#xff08;方向&#x…

github上传文件

git remote add origin https://github.com/Ineedstrong/socket-practice.git如果不行的情况下git remote set-url origin gitgithub.com:Ineedstrong/socket-practice.git就以这种方式3. 使用 SSH 替代 HTTPS&#xff08;推荐&#xff09;绕过 HTTPS 的 TLS 问题&#xff1a;生…

【STM32U385RG 测评】基于VSCode的STM32开发环境搭建

【STM32U385RG 测评】搭建基于VSCode的STM32开发环境 文章目录【STM32U385RG 测评】搭建基于VSCode的STM32开发环境一、安装软件1.1 安装VSCode1.2 安装STM32CubeMX1.3 安装STM32CubeCLT1.4 安装ST-MCU-FINDER-PC二、安装插件2.1 安装 STM32Cube for VSCode插件三、创建项目3.1…

设计模式(二)——策略模式

一、基本概念 既然你已经接触到了设计模式&#xff0c;那你大概率你写过类似这样的代码&#xff1a;根据不同的选择条件&#xff08;如排序、搜索或路由&#xff09;执行不同的代码逻辑。通常的解决方案是使用if-else或switch语句&#xff0c;但这些条件判断有一个最大的问题是…

MySQL基础知识总结

一、MySQL简述 数据库 是一个有组织的集合&#xff0c;用于存储和管理数据的系统。它是一个软件系统&#xff0c;被设计用来存储、检索和管理数据&#xff0c;并提供数据的快速访问和处理。数据库可以被看作是一种特殊的文件系统&#xff0c;但与传统的文件系统不同的是&#…

数据仓库命名规范

1. 概述 数据模型是数据管理的分析工具和交流的有力手段&#xff1b;同时&#xff0c;还能够很好地保证数据的一致性&#xff0c;是实现商务智能&#xff08;Business Intelligence&#xff09;的重要基础。因此建立、管理一个企业级的数据模型&#xff0c;应该遵循标准的命名…

FlinkSQL Joins全解析

1. Lookup Join用途&#xff1a;用于流表与外部维表&#xff08;静态或缓慢变化表&#xff09;的关联&#xff08;如 MySQL、HBase 等&#xff09;。特点&#xff1a;通过 实时查询外部存储 获取维度数据。仅支持 处理时间&#xff08;Processing Time&#xff09;语义&#xf…

【FileZilla】基于 FTP 的 Windows 和 Linux 文件传输

在嵌入式开发过程中我们经常需要在 Windows 和 Linux 下进行文件传输&#xff0c;本文就介绍一种通过 FTP 实现 Windows 和 Linux 文件传输的方法。 Windows 为物理主机&#xff0c;Linux 是在 Vmware 虚拟机中安装运行的 Ubuntu&#xff0c;版本为 18.04。 Ubuntu 安装 FTP …

【GPT入门】第42课 ollama安装与运行llama3模型

【GPT入门】第42课 ollama安装与运行llama3模型1. 安装ollama2.运行模型3.测试模型3.1 直接在命令行交互3.2 openai接口1. 安装ollama https://ollama.com/ 选download, 选linux 执行安装命令&#xff1a; curl -fsSL https://ollama.com/install.sh | sh2.运行模型 启动服…

Lua语言元表、协同程序

元表元表的定义允许我们改变table的行为。setmetatable(普通表&#xff0c;元表)-- 元表a {"a","b","c"} -- 普通表 b {} --元表c setmetatable(a,b)print("------------------------")f {}print("f:",f)d setmetatabl…

[已解决]VSCode右键菜单消失恢复

前言 莫名其妙,好似VSCode自动更新以后,右键菜单就失效了,重装也无果. 手动搞一个吧 保存下面代码到桌面修复VSCODE右键菜单.reg,双击运行即可. Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]"使用 VSCode 打开""…

什么是浏览器标识?

浏览器标识 层面一&#xff1a;网络层指纹 (HTTP/TLS) 这是最基础的指纹&#xff0c;即使不用浏览器&#xff0c;只用Go的 net/http 发请求也会留下。HTTP Headers (请求头): User-Agent: 最著名的标识&#xff0c;声明自己是什么浏览器。很容易伪造&#xff0c;但也很容易被识…

五十八、【Linux系统nginx服务】nginx代理服务器、nginx优化

Nginx代理技术全景图 #mermaid-svg-0dRktnHYPXypO9xB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0dRktnHYPXypO9xB .error-icon{fill:#552222;}#mermaid-svg-0dRktnHYPXypO9xB .error-text{fill:#552222;stroke…

[0CTF 2016]piapiapia

usernamepassword回显推断admin123Invalid user name or passwordadmin123Invalid user name or passwordadmin123Invalid user name or passworda123Invalid user name说明username是adminadmin1Invalid password这很奇怪了admin0200&#xff1f;admin11Invalid user name or …