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

本文解释了在C++中,数据的存储方式,包括不同数据类型占用的内存大小和内存地址的含义。重点区分了变量的内存地址(指针)和存储地址的变量(指针变量),并通过代码示例说明如何通过地址访问变量和理解指针的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量的内存地址叫指针,存放指针的变量叫指针变量。估计不少人会混淆这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++中所说的指针其实是一个地址。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值