关于对今天学到的东西的一个思考与理解
指针变量的大小和指向对象的类型没什么关系,取决于机器的位数
比如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懒
有时候学的会了但是真的懒得写出来,如果是那种新学到的还好
旧知识真的懒得写。
忘了就看大佬的博客吧。
感觉自己又变懒了啊。。。。。