关于为啥无论是啥类型指针变量的大小都是一样的

关于对今天学到的东西的一个思考与理解

指针变量的大小和指向对象的类型没什么关系,取决于机器的位数

比如32位机器 32个bit=4byte 64位则是 64bit=64/8=8byte

该机器的指针变量大小就是4字节(无论类型)

其实与电脑的cpu有关 电脑的位数是由cpu里的每根电线电流流过后产生了0与1的信号

所组成了一个处理信息的空间(32位32根         64位64根         并着排列)

(32位)

00000000000000000000000000000000 从0开始

00000000000000000000000000000001

00000000000000000000000000000010

..........................

1111111111111111111111111111111111111 一直到2^32 -1结束(好像是42949967295,挺大的)

计算机的二进制存储地址(从监视里看的时候是十六进制的,所以前面会多一个0x)

32位一一32bit一一32/8=4byte

因此32位的是4字节的cpu处理信息空间

又因为指针是存储地址的变量,装的是地址所以装的东西的大小是一样的(都是地址,只不过是地址位置不同)

但又一个点 每种变量的大小不同

比如 int a        int 类型大小是四字节 但是a的地址 只取a这个变量里最低字节序的地址(计算机中每个字节都有一个地址,因此,其他多字节的变量类型会有点像数组)

那么 int*ass=&a 装的就是a最低字节序的地址(a感觉有点像   数组的数组名就是首地址)

以及             像这样int的类型        变量的地址都是该变量最低字节序字节的地址

 

 

 

因此 在强制转换类型时 char*arr=(char*)ass

字符指针 arr 取到的就是 整型指针a 的最低字节序的地址(强取就是从最低地址开始) 但失去了关联性 没有获取a的完整地址 所以从a中可能会取到不完整的数据

(这点和存储数据的方式是 大端还是小端 以及数据的大小有关)

emmm............一点肤浅的思考

我思考的如果有什么不对还请大佬指正

话说。。。距离我第一次写博客的时间有点长了啊

最近因为家里人生病住院要照顾,今天总算是解放了

以后每天写点文章来总结知识吧,不知道有没有人看,但对我来说可能也算是复习呢

但我有点。。。emm懒

有时候学的会了但是真的懒得写出来,如果是那种新学到的还好

旧知识真的懒得写。

忘了就看大佬的博客吧。

感觉自己又变懒了啊。。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值