循环char 指针_C++指针学习体会(二)

5cdadb860f352c0e4c2c1dea203989e2.png

当我们知道指针就是指向某种数据的地址后,不禁就会产生一种冲动,想看看数据在内存中到底是如何存储的,下面通过一段代码探究一下(在下例中int为4个字节,short为2个字节,char为1个字节):

int i1=69649;int i2=286261504;//定义两个整形变量,十六进制分别为00 01 10 11、11 10 01 00short k1=12835;short k2=5141;//定义两个短整形变量,十六进制分别为32 23、14 15char c1='0';char c2='1';//定义两个字符变量,十六进制分别为30、31cout<

得出结果如下:

c1ecd33d7a81784169c76d68a28f89ea.png

从输出的地址来看,程序中连续定义的若干个变量以各个块(int以4个字节为一块、short以2个字节为一块、char以1个字节为一块)为单位存储在相邻的内存空间,各个块地址值按降序排列。

那么在每个数据对应的块内,数据又是如何存储的呢?

下面先定义char指针变量pc指向存储字符c2内存的前一个字节地址,定义一个short和一个int空指针。然后从c2对应的内存位置开始,char指针递增,为short和int指针赋值,循环输出各类型指针对应块内存储的数据(char为输出每个字节内存储数据,为ASCII码;short输出当前1个字节位置及增加1个字节后共2个字节内存储的数据;int输出当前1个字节位置及增加3个字节后共4个字节内存储的数据)。

char *pc=&c2-1;short *pk=NULL;int *pi=NULL;for(int i=1;i<=14;i++){cout<

输出结果如下所示:

6fb1a97847dbd5bd99510b842aa57ac2.png

因此我们得出各个字节内存所存储的数据如下表:

745db0cbbadc2592fd9cca8eee6b7dee.png

最后得出结论:

1.变量以各个块(int以4个字节为一块、short以2个字节为一块、char以1个字节为一块)为单位存储,连续定义的变量按降序排列在相邻的内存空间里。

2.在每个数据对应的内存块内,数据以字节为单位从高到底依次存储。

3.对多字节数据来说,该类型数据的地址(即指针值)为该类型数据最后一个字节的内存地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值