摘要:同理在位机器下指针变量的大小也就为个字节。上文中已经提到指针变量的大小都是固定的,为何要分,或者类型呢因为指针变量只表示变量第一个字节所处的内存单元的编号,指针变量的类型决定了我们能访问几个字节的空间。
指针是某块存储空间的地址,他能通过地址找到该存储空间储存的内容。
32位系统控制2的32次方个内存单元,每个内存单元大小为一个字节,每个内存单元都有一个32位的二进制编号,这个编号被称为地址。因为地址是32位二进制,所以指针变量的大小也就是4个字节。同理在64位机器下指针变量的大小也就为8个字节。
在vs下,我们通过sizeof 分别打印一下32位系统和64位系统下指针变量的大小
32位
64位
如果定义了 int char 或者float类型的变量 对他们&取地址,所得到的就是int*,char*,float*的指针变量。上文中已经提到指针变量的大小都是固定的,为何要分int*,char*,或者float*类型呢?因为指针变量只表示变量第一个字节所处的内存单元的编号,指针变量的类型决定了我们能访问几个字节的空间。
指针中存放了变量的地址,如果需要对指针所指向的那块空间进行数据的读取或者修改就需要解引用他,这就要用到*,也就是解引用操作符。具体使用如下:
指针的类型决定指针解引用时所访问的空间大小,指针类型也决定了指针+1,-1能跳过几个字节的空间,如果int *指针·+1 那么他就跳过了四个字节空间 ,char*指针+1就跳过一个字节的空间。
在函数传参过程中,如果为传值调用,对于一个变量所需要的内存空间很小,但是对于一个数组或者结构体所需要的内存空间就非常大了。如果我们使用指针,进行传址调用,所需的内存空间也仅仅是4或者8个字节的大小。
谈到指针和数组,我们需要先明白数组名是什么。
数组名就是数组首元素的地址。
既然是地址我们就可以用指针来访问数组中的元素。
我们通常会这样用 arr[i] (arr表示数组 i代表下标),来访问数组下标为i的元素 但是通过上图,我们观察数组中每个元素的地址,可以看出数组中每个元素的存储都是连续的。既然是连续的,我们就可以通过arr加减数字来表示后面元素的地址,再对其解引用访问数组的元素。
通过观察,可以确定这样的方式是完全正确的。
我们可以得出这样一个结论 arr[i]=*(arr+i)
如果把i和arr 交换一下
再观察一下上图 *(i+arr)=i[arr]
最终我们得出 arr[i]=*(arr+i)=*(i+arr)=i[arr]
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/119814.html
摘要:广告位出售垃圾回收机制浅析与理解对垃圾回收进行分析前,我们先来了解一些基本概念基本概念内存管理内存管理对于编程语言至关重要。里面的变量通常是局部变量函数参数等。 GC(@广告位出售)垃圾回收机制: 浅析与理解 对垃圾回收进行分析前,我们先来了解一些基本概念 基本概念 内存管理:内存管理对于编程语言至关重要。汇编允许你操作所有东西,或者说要求你必须全权处理所有细节更合适。C 语言中虽然...
摘要:广告位出售垃圾回收机制浅析与理解对垃圾回收进行分析前,我们先来了解一些基本概念基本概念内存管理内存管理对于编程语言至关重要。里面的变量通常是局部变量函数参数等。 GC(@广告位出售)垃圾回收机制: 浅析与理解 对垃圾回收进行分析前,我们先来了解一些基本概念 基本概念 内存管理:内存管理对于编程语言至关重要。汇编允许你操作所有东西,或者说要求你必须全权处理所有细节更合适。C 语言中虽然...
摘要:继承方式继承方式限定了基类成员在派生类中的访问权限,包括公有的私有的和受保护的。所以子类给父类引用赋值也是可以的,相当于给子类对象中继承的父类部分起了别名。如图成员函数也是如此,当子类与父类具有函数名相同的函数时,还是符合就近原则。 ...
摘要:写在前面博客主页的江湖背景的江湖背景欢迎关注点赞收藏留言本文由原创,首发首发时间年月日最新更新时间年月日坚持和努力一定能换来诗与远方向未见花闻学习参考书籍深入理解计算机系统作者水平很有限,如果发现错误,请留言轰炸哦万分感谢感谢感谢 ?写在前面 ?博客主页:kikoking的江湖背景?...
阅读 2536·2021-11-24 10:20
阅读 2385·2021-09-10 10:51
阅读 3369·2021-09-06 15:02
阅读 3102·2019-08-30 15:55
阅读 2834·2019-08-29 18:34
阅读 3070·2019-08-29 12:14
阅读 1205·2019-08-26 13:53
阅读 2915·2019-08-26 13:43