首页 > 其他分享 >初识指针

初识指针

时间:2023-05-10 22:33:55浏览次数:28  
标签:字节 32 pa 地址 初识 内存 指针

指针:就是地址,是由解引用操作符来找到所想要的对象,

指针变量:是用来存放别人的地址的

内存是怎么编号的?

一般计算机是32位或者64位,例:32位的计算机是有32根地址线而地址是物理线是可以通电的,正电就是1,负电就是0,而这些线全部通电有些电是正的有些是负的,而这些电就会产生电信号,

电信号就会转换成数字信息:1和0组成的二进制序列

而32根二进制序列信号会产生可能性

00000000000000000000000000000000

0111111111111111111111111111111111111111

1000000000000000000000000000000

11111111111111111111111111111111111111111把这样的二进制序列就是内存的编号,二进制序列有2的32次方个,这些二进制序列都可以作为内存的编号,当这些二进制序列当成编号,这些编号就称为内存单元的地址

一个这样的内存单位给多大的空间呢?

假设一个内存单元是1bit

2的32次方是100000000000000000000000000000000换成bit就是

 c语言中最小的char类型而char是1byte(字节)-8bit(比特位)-8个地址,如果一个地址是1个bit的话太浪费太细了,而最终的一个内存单位是1个字节的话就比较合适,1个字节给1个地址

 a在内存中要分配空间-4个字节

%p是专门用来打印地址的

&a:取a的地址,不会哪全部地址,只会拿4个字节的第一个字节的地址

pa是用来存放地址的,在c语言中pa叫指针变量

*是说明pa是指针变量的

int是说明pa执行的类型对象是int类型

 这里的a的值是10,*pa是通过pa里面的存放的a的地址找到a,而*pa可以间接改变a的值

*:解引用操作(*是单目操作符) 

指针变量的大小

 

为什么全部类型打印出来的大小大都是一样的呢?

指针的类型大小都是一样的,因为指针式用来存放地址的,指针需要多大空间,取决于地址存储需要多大空间

32位的平台打印出来的是32bit也就是4个byte

64位的电平台打印出来的数63bit也就是8个byte

标签:字节,32,pa,地址,初识,内存,指针
From: https://www.cnblogs.com/hzy7/p/17389543.html

相关文章

  • csrf与auth初识BBS项目
    csrf相关的装饰器#与csrf验证相关#打开csrf中间件后,方法都需要验证''' 打开csrf的中间件之后,有几个方法不验证 关闭csrf的中间件之后,有几个方法验证'''fromdjango.views.decorators.csrfimportcsrf_exempt,csrf_protect@csrf_exempt#不再检测,局部禁用(前提是全站......
  • const与指针的四种关系
     定义变量inta=1;constintb=2; 1.将 普通变量地址 赋给 普通指针:int*p1=a;  // 正确 2.将 const变量地址 赋给 普通指针:int*p2=b; // 错误//p2是普通指针,意味着可以通过p2修改b的值,而b为const,不可修改,造成权限冲突//如果一......
  • 常量指针和指针常量的区别
     定义变量inta=1;intb=2; 常量指针:顾名思义,指向常量的指针(apointertoconstint),不能通过该指针修改变量的值(不通过该指针仍然可以修改)constint*p1=&a; // *p1为const,即指针指向的值为const*p1+=1;  // 错误,试图通过p1修改a的值p1=&b;   ......
  • 二级指针
     什么是二级指针?有一个变量a,他被定义为存放int数据4,如果有一个变量pa存放的内容是变量a的地址,我们把他a叫做指针,也叫他一级指针。现在我们有另外一个变量ppa,paa的内容存放的是pa的地址,那么paa就是二级指针,即指向指针的指针。int a = 4;int *pa = &a;int **ppa =......
  • 函数 指针 数组
    首先抛出几个问题1什么是函数?什么是数组?什么是指针?2怎么区分函数指针指针函数指针数组函数指针数组?开始解读:首先明确这几个概念A函数:表示实现特定功能的可复用代码块。B指针:保存变量地址的特殊变量(指针既然是变量,那么也是有地址的,当我们想要对指针自己进行操作时,可能......
  • 初识文件管理
    初识文件管理1、文件的属性2、文件内部的数据应该怎样组织起来3、文件之间应该怎样组织起来4、操作系统应该向上提供哪些功能5、从上往下看,文件应如何存放在外存6、其他需要由操作系统实现的文件管理功能知识回顾......
  • delphi 初识内存流: 从设置用户头像到从数据库存取图片到的过程
    所谓"流",就是一段数据或是一块内存;在进行流操作时,我们不必关心流中的数据到底是什么;只需要知道流的大小和当前的指针位置.所以流只有两个属性: Size、Position.对流的操作,不过就是读取和写入.所以流最主要的方法就是Read和Write.在很多控件的使用中,读取主要用Lo......
  • C代码审计之指针诡计
    指针诡计(pointersubterfuge)是指通过修改指针值(函数指针、对象指针)来利用程序漏洞的方法。发生溢出的缓冲区被用于修改函数指针或对象指针的值。攻击函数指针使得攻击者能够直接将程序的控制权转移到由其提供的任意代码,对对象指针进行修改并赋值的能力导致任意内存写。 缓冲区......
  • [Lua]lua初识
    --mac上有很多文本编辑器,Himi找了很多,感觉TextMate是比较好用的,小巧且功能强大!而且免费,图标是个小菊花----注释语句 --[[ 注释段落语句  ]]-- --引用其他lua文件,不需要加上(.lua)后缀--require"xx" --变量不需要定义,可以直接赋值count=10......
  • 初识数据库
    楔子假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写?由于在同一时段抢票的人数太多,所以你的程序不可能写在一台机器上,应该是多台机器一起分担用户的购票请求。那么问题就来了,票务信息的数据存在哪里......