加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.com.cn/)- 数据安全、数据开发、文字识别、图像处理、媒体智能!
当前位置: 首页 > 站长资讯 > 评论 > 正文

真希望自己从没学过编码

发布时间:2021-02-04 14:16:33 所属栏目:评论 来源:互联网
导读:注意看注释部分的结果,我们看到,piv的值显示加了4(sizeof(int)),然后又加了16(4*sizeof(int))。 八 指针变量和指向关系 用来保存指针的变量,就是指针变量。 如果指针变量p1保存了变量 num的地址,则就说:p1指向了变量num,也可以说p1指向了num所在的内

注意看注释部分的结果,我们看到,piv的值显示加了4(sizeof(int)),然后又加了16(4*sizeof(int))。

八 指针变量和指向关系

用来保存指针的变量,就是指针变量。

如果指针变量p1保存了变量 num的地址,则就说:p1指向了变量num,也可以说p1指向了num所在的内存块 ,这种指向关系,在图中一般用 箭头表示。
 

已知:num的类型是int,占用了4个字节的内存空间,其值是97,地址是0028FF40。我们从以下几个方面去分析。

1、内存的数据

内存的数据就是变量的值对应的二进制,一切都是二进制。

97的二进制是 : 00000000 00000000 00000000 0110000 , 但使用的小端模式存储时,低位数据存放在低地址,所以图中画的时候是倒过来的。

2、内存数据的类型

内存的数据类型决定了这个数据占用的字节数,以及计算机将如何解释这些字节。

num的类型是int,因此将被解释为 一个整数。

3、内存数据的名称

内存的名称就是变量名。实质上,内存数据都是以地址来标识的,根本没有内存的名称这个说法,这只是高级语言提供的抽象机制 ,方便我们操作内存数据。

而且在C语言中,并不是所有的内存数据都有名称,例如使用malloc申请的堆内存就没有。

4、内存数据的地址

如果一个类型占用的字节数大于1,则其变量的地址就是地址值最小的那个字节的地址。

因此num的地址是 0028FF40。内存的地址用于标识这个内存块。

5、内存数据的生命周期

num是main函数中的局部变量,因此当main函数被启动时,它被分配于栈内存上,当main执行结束时,消亡。 如果一个数据一直占用着他的内存,那么我们就说他是“活着的”,如果他占用的内存被回收了,则这个数据就“消亡了”。

C语言中的程序数据会按照他们定义的位置,数据的种类,修饰的关键字等因素,决定他们的生命周期特性。

实质上我们程序使用的内存会被逻辑上划分为:栈区,堆区,静态数据区,方法区。

不同的区域的数据有不同的生命周期。

无论以后计算机硬件如何发展,内存容量都是有限的,因此清楚理解程序中每一个程序数据的生命周期是非常重要的。

七 指针运算

N多的面试会考这种东西了:

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读