前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入了解指针(一)

深入了解指针(一)

作者头像
用户11290664
发布2024-09-25 13:29:38
620
发布2024-09-25 13:29:38
举报
文章被收录于专栏:学习

一.内存和地址

先了解内存中最小的单位——————byte-字节

由小到大内存中分为 bit - ⽐特位 byte - 字节 KB MB GB TB PB

其中1byte = 8bit 1KB = 1024byte 1MB = 1024KB 1GB = 1024MB 1TB = 1024GB 1PB = 1024TB

二指针变量和地址 我们平常说的指针的全称叫做指针变量,在内存中可以形象的表示为发

其中每一层为一个字节。那么我们如何使用内存中地址?

这就要用到取地址操作符&和解引用操作符,以后会讲解。

三 究竟该如何理解编址

CPU访问内存中的某个字节空间,必须知道这个字节空间在内存的什么位置,⽽因为内存中字节很多,所以需要给内存进⾏编址(就如同宿舍很多,需要给宿舍编号⼀样)。不过,我们今天关⼼⼀组线,叫做地址总线。我们可以简单理解,32位机器有32根地址总线,每根线只有两态,表⽰0,1【电脉冲有⽆】,那⼀根线,就能表⽰2种含义,2根线就能表⽰4种含义,依次类推。址线,就能表⽰2^32种含义,每⼀种含义都代表⼀个地址。地址信息被下达给内存,在内存上,可以找到该地址对应的数据,将数据在通过数据总线传⼊CPU内寄存器。

比如我有一台32位地址总线的电脑是232byte=235bit 4GB = 22 GB = 212 MB = 222 KB = 232 byte = 235 bit 所以32位地址总线的电脑最多只能访问4GB的内存

四指针变量的⼤⼩

指针变量的⼤⼩取决于地址的⼤⼩ 32位平台下地址是32个bit位(即4个字节) 64位平台下地址是64个bit位(即8个字节)

五&和*

代码语言:javascript
复制
int a = 0;
int* pp = &a;
printf("%p",pp);

这是把a的地址取出来放到指针变量pp中

pp变量定义时候要加*:int *pp。用%p打印p也就是a的地址为如图。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档