C++指针解读(1)-- 什么是指针

news2025/2/28 16:56:38

变量的内存地址叫指针,存放指针的变量叫指针变量。估计不少人会混淆这2个概念,而且有的书籍资料把“指针变量”称为“指针”。

1、数据的存储方式

程序中的数据都会占用一块内存空间,不同数据类型占用的内存大小不同。比如char、bool是1个字节、short是2个字节、int是4个字节等。

内存是有地址的,计算机是通过内存地址来访问的。在计算机中,1个地址代表1个字节。我们常说的8位、16位、32位、64位,指的是地址的长度。即地址有几个bit位。

比如:

(1)8位机表示地址长度是8个bit,2进制的11111111转成16进制是FF,所以地址范围是0x00 -- 0xFF。这样就有256个地址,即内存的大小是256个字节。

(2)32位机表示地址长度是32个bit,所以地址范围是0x0000 0000 - 0XFFFF FFFF。有2^32个地址,即内存的大小是4G。

假设现在定义了2个变量:int i, int j,因为每个变量占4个字节内存,则这2个变量在内存中的位置大概是像下面这样的。

2、数据的读取方式

知道了变量的地址和变量的类型后,就可以这样访问变量int i了:

(1)先找到存放变量的首地址,比如0x0000 0001;

(2)从这个地址开始取4个字节的数据。

我们可以用代码来演示一下:

class A {
public:
    int i = 11;
};
int main()
{
    A a;
    int* i = (int*)&a;

    printf(" 变量i的值: %d\n", *i);

    return 0;
}

我们先用&a取到了对象a的首地址,根据C++对象模型我们知道这个首地址也是变量i的首地址,所以从这个地址开始取int类型长度的数据就是变量i的值。

通过地址我们能找到所需的变量,也可以说地址“指向”该变量。因此,这个地址也被称为指针,即英文pointer。所以我们在C++中所说的指针其实是一个地址。

指针也需要有地方存储,这个存储指针的变量就叫指针变量,即存储指针的变量。

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

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

相关文章

树上启发式合并:xor1

https://vjudge.net/contest/587311#problem/C 最近没打这个套路,场上忘了 发现和一堆lca什么的有关,然后又是lca下不同的儿子,考虑树上启发式合并。 对于 i ⊕ j i\oplus j i⊕j,我们可以拆位枚举 然后常数大会被卡常。但树上…

AndroidStudio模拟器使用rootAVD ROOT(失败)

下载rootAVD $ git clone https://github.com/newbit1/rootAVD.git 下载Magist Releases topjohnwu/Magisk GitHub 改名为Magist.zip,然后替换 察看设备 > .\rootAVD.bat ListAllAVDsrootAVD.bat system-images\android-31\google_apis_playstore\x86_64…

数据库系统概念学习2

对空值和布尔值的聚集 嵌套子查询 子查询是嵌套在另一个查询中的 select-from-where 表达式 集合成员资格 连接词 in 测试元组是否是集合中的成员,连接词 not in 测试元组是否不是集合中的成员 ↑ 找出在 2009 年球季和 2010 年春季学期同时开课的所有课程 ↓ 找…

docker安装sql-server数据库,使用navicat实现备份数据库导入

docker安装sql-server,使用navicat实现备份数据库导入 1、docker安装sql-server数据库2、使用navicat连接sql-server3、使用navicat导入备份数据库1、第一步:选择需要备份的数据源2、第二步 (选择备份计划,设置还原文件位置信息&a…

云计算到底牛x在哪里?

你们好,我的网工朋友。 云计算已经霸屏行业有段时间了,但很多粉丝朋友还是不太明白什么是云计算,为什么要学云计算。 从宏观来说,其实云计算的优点很多。 就和传统模式相比,云计算在六个维度都有显著的提升点。 比…

git主干master分支回滚到历史版本(不会有错误的提交记录)

master版本,“合并错了”的回滚步骤: (这样做不会有“合并错了”的提交记录) 注意:操作前先对master拉一个分支出来,做备份; 1. 在gitLab的上一次合并记录,复制commit-id ​ 2. 在本地执行检出master版本,执行 git re…

阿里云价格计算器入口(一键计算精准报价)

阿里云服务器价格计算器,鼠标选择云服务器ECS实例规格、地域、系统盘、带宽及购买时长即可一键计算出精准报价,阿里云百科aliyunbaike.com分享阿里云服务器价格计算器链接地址: 阿里云服务器价格计算器 先打开阿里云服务器ECS页面 aliyunba…

浅析倾斜摄影三维模型(3D)几何坐标精度偏差的几个因素

浅析倾斜摄影三维模型(3D)几何坐标精度偏差的几个因素 倾斜摄影是一种通过倾斜角度较大的相机拍摄建筑物、地形等场景,从而生成高精度的三维模型的技术。然而,在进行倾斜摄影操作时,由于多种因素的影响,导致…

Godot自动寻路功能讲解-使用C#语言(2D游戏导航教程)

文章目录 创建导航NavigationAgent2D节点设置目标位置其他文章 创建导航 首先,创建一个基本的场景,下面的文章讲解了如何创建一个基本的导航场景,点击如下链接前往该文章: Godot2D角色导航-自动寻路教程 NavigationAgent2D节点 …

Vue封装组件并发布到npm仓库

前言 使用Vue框架进行开发,组件封装是一个很常规的操作。一个封装好的组件可以在项目的任意地方使用,甚至我们可以直接从npm仓库下载别人封装好的组件来进行使用,比如iview、element-ui这一类的组件库。但是每个公司的业务场景可能不同&…

Matlab论文插图绘制模板第119期—分组气泡图

在之前的文章中,分享了很多Matlab气泡图的绘制模板: 进一步,再来分享一种特殊的气泡图:分组气泡图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载…

护眼台灯是智商税吗?书客、飞利浦、南卡三款台灯真实测评

护眼台灯本身并不是智商税,但是有些品牌或者商家可能会利用消费者对护眼产品的需求来进行夸大宣传或者高价销售,让消费者在不了解产品的情况下盲目购买,从而产生了智商税的嫌疑。因此,在购买护眼台灯时,消费者应该理性…

二.镜头知识之镜头总长,法兰距,安装接口

二.镜头知识之镜头总长,法兰距,安装接口 文章目录 二.镜头知识之镜头总长,法兰距,安装接口2.1 线激光模组镜头的FBL 与 TTL(Total Track Length) 镜头总长2.2 相机法兰距2.3 线激光模组镜头的TTL 以及 From Barrel bottom to imag…

ipad手写笔哪个好用?苹果平替笔性价比高的

如果你想要入手一款和iPad匹配的电容笔,想必你的第一想法就是苹果的原装电容笔。然而这款电容笔虽然很好用,但价格会相对的昂贵一些。而平替电容笔,却是一种不错的选择,而且价格也很合理。一支普通的平板电容笔,其售价…

Android笔记(六):JetPack Compose常见的UI组件

一、文本组件 1.1Text Column(modifier Modifier.fillMaxSize().background(Color.Green).padding(10.dp)){Text(text stringResource(id R.string.title_content),modifier Modifier.fillMaxWidth().border(BorderStroke(1.dp, Color.White)),fontSize 20.sp,textAlign …

【Overload游戏引擎细节分析】从视图投影矩阵提取视锥体及overload对视锥体的封装

overoad代码中包含一段有意思的代码,可以从视图投影矩阵逆推出摄像机的视锥体,本文来分析一下原理 一、平面的方程 视锥体是用平面来表示的,所以先看看平面的数学表达。 平面方程可以由其法线N(A, B, C)和一个点Q(x0,…

SQL开发笔记之专栏介绍

Sql是用于访问和处理数据库的标准计算机语言,使用SQL访问和处理数据系统中的数据,这类数据库包括:Mysql、PostgresSql、Oracle、Sybase、DB2等等,数据库无非围绕着“增删改查”的核心业务进行开发。并且目前绝大多数的后端程序开发…

ElasticSearch-Head 数据浏览406问题解决

解决方法: 1、打开Docker DeskTop的Containers,找到es-head容器 2、选择Exec Tab选项 3、编辑vendor.js文件 vim _site/vendor.js 4、显示行号 :set nu 5、修改配置 # 修改文件第6886、7574行 将"application/x-www-from-urlencodes"修改…

经纬恒润数字钥匙,让出行更简单

汽车智能进化的同时,汽车与智能手机之间的联系也越来越紧密。新兴的汽车数字钥匙,可以将传统实体钥匙“装入”智能手机,帮助用户摆脱忘带钥匙的烦恼,让出行变得更简单。汽车数字钥匙的实现主要是基于BLE(蓝牙&#xff…

DevEco Hvigor高效编译,构建过程新秘籍

作者:Lewei,华为终端BG编译构建技术专家 DevEco Hvigor是使用TypeScript语言开发的全新轻量化的任务调度工具,针对HarmonyOS应用提供了一系列编译构建任务,支持将HarmonyOS应用编译构建出对应的产物包。作为一款HarmonyOS应用编译…