返回地址【数据结构】

小问题?
1.我们是如何根据地址值来找到我们对应的数据的?
详细陈述一下:当我们开辟一个整数类型,取名为a,假设地址空间是从数值为2000进行存储,并且我们假设整形占用4个字节,那么我们在内存中需要的空间就是2000~2003,共4个字节,同时我们定义一个整形的指针为p,p存储的地址就是a的地址,我们写作是int p;p=&a;就相当于是p==2000,这如何来确定地址空间当中所存的具体数值呢?我们用int 2000来进行确定的,我们开始假设的是整形占用4个字节,并且起始地址是从2000开始的,那么我们的计算机从2000开始连续读取4个字节就会得到我们想要的数据,由此可见,我们的真实数据是有数据类型以及开始的首地址来进行存储的
2.我们都知道数组名代表了元素的首地址,那么我们来进行数组的使用规则进行理解一下,int[]a={};int
p=a;p==2000;
(p+1)==a[1]
我们来仔细的谈一谈此时的加1操作,这里就与数据的基类型是有关的,加1就是加一个基类型的字节数,同样我们返回的值为某个元素的第一个首地址,不会返回整个字节数地址
在这里插入图片描述
在使用malloc和realloc以及free的时候一定是要有前面的有文件的,也就是<stdlib.h>
也要知道宏定义,Init_size代表的是初始的大小,也就是一开始我们需要开辟的空间大小,这里有一个要求,初始的空间不能太大,也不能太小,太大了会比较浪费,太小了就需要后期的扩充函数,而一旦使用到后期的扩充函数就会涉及到两个问题,第一就是申请成功,第二就是申请不成功,然后再转向其他的仓库进行,会比较浪费时间,最好就是不用后期的扩充函数,一次到位,如果我们能够找到一种方法,能确定最初所要申请空间的大小,那么我们就不用后期的扩充函数,从而避免了时间的浪费,但是这个问题是否就能够由我们来解决呢?有待考察,而Increace_size代表的是申请空间的时候每次申请的内存空间我们进行的大小的定义,是由我们自己进行定义的,与系统是没有关系的,是由relloc进行决定的,
小插曲:
1.Elem就是所有数据类型的一个抽象概括
2.数组当中的数值,开始申请了一个空间大小,使用的函数可以是动态函数malloc函数,
3.int
a就是代表着指针类型的变量起名为a,没有实际的内存空间,我们必须用函数malIoc来进行空间的开辟,
4.有了指针类型的地址,我们就要联想到他是否有真正的内存空间,如果没有,那么我们就要进行malooc函数来进行空间的开辟
在这里插入图片描述
当我们申请空间的时候,只是申请了一个内存地址,也就是elem*的值被赋予定义,就相当于我们有了一个仓库,找到了我们接下来做事情的一个地方,但是此时仓库是空的,也就是数据为0个,没有元素,而此时的sIze就是指仓库的大小,Len为存了多少个元素初始值为0,也就是没有参与元素,而下面的size是仓库的大小,我们看一下判断条件,如果地址空间为空,图上显示的是为null时,就是开辟空间失败,是硬件的问题,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【超级详细的小白教程】Hexo 搭建自己的博客

– 前言 这是一篇有关如何使用 Github Pages 和 Hexo 搭建属于自己独立博客的详尽教程&#xff0c;本人是软件工程专业本科生&#xff0c;目前只学习了C和C编程语言&#xff0c;对网站开发的有关知识几乎为零&#xff0c;这也是我搭建好自己的博客之后写的第一篇博客&#xff…

面向对象思想精华总结

一、三大特性 封装继承多态 二、类图 泛化关系 (Generalization)实现关系 (Realization)聚合关系 (Aggregation)组合关系 (Composition)关联关系 (Association)依赖关系 (Dependency) 三、设计原则 S.O.L.I.D其他常见原则 参考资料 一、三大特性 封装 利用抽象数据类型将数据…

insert函数的修改,

我们来看一下图片当中的第2个圆圈&#xff0c;为什么使用size来相加呢&#xff1f;我们知道一开始我们定义的初始空间为init_size;我们想一下啊&#xff0c;如果是第1次进行空间的增加&#xff0c;那么我们使用InIt来进行相加是可以的&#xff0c;但是当第2次想加我们再想开辟空…

【数据结构】线性表大咖

循环链表的介绍 概念&#xff1a;链表的最后一个节点的指针&#xff0c;由原来的 空指针变成指向第1个节点的链表。 类比&#xff1a;我们进行串珠子的操作&#xff0c;将首尾通过线进行连接&#xff0c;同样我们的链表就是通过指针指向的方式进行连接&#xff0c;使其成为一…

线性结构基本概念【数据结构】F

线性表的概念&#xff1a;线性表是一种最简单的线性结构&#xff0c;线性结构是单个数据元素的有序结合 线性结构的基本特征为&#xff1a; 第一&#xff0c;集合中必存在唯一的一个第1元素&#xff0c; 第二&#xff0c;集合中必存在唯一的一个最后元素&#xff0c; 第三&am…

leetcode589. N叉树的前序遍历

给定一个 N 叉树&#xff0c;返回其节点值的前序遍历。 例如&#xff0c;给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]。 思路&#xff1a;先放入自己&#xff0c;再依次遍历孩子。 /* // Definition for a Node. class Node {public int val;public List<Node> c…

顺序结构实现【数据结构】

虽然在数据结构当中是先出现的线性表&#xff0c;然后出现的是数组 一&#xff1a;线性表的顺序存储结构 顺序映象&#xff1a;用一组地址连续的存储单元依次存放线性表当中的数据元素 线性表的起始地址&#xff1a;线性存储第一个数据元素的地址&#xff0c;我们也称作是基地址…

leetcode590. N叉树的后序遍历

给定一个 N 叉树&#xff0c;返回其节点值的后序遍历。 例如&#xff0c;给定一个 3叉树 : 思路&#xff1a;先遍历所有孩子&#xff0c;再放入自己。 /* // Definition for a Node. class Node {public int val;public List<Node> children;public Node() {}public No…

链表的形式【F】

数据元素之间的关系在计算机中有两种表示方法: 顺序映象, 非顺序映象. 对应两种存储结构: 顺序存储结构, 链式存储结构 线性结构就是一种逻辑关系&#xff0c;方便我们对数据进行研究但是不考虑真实的存储结构 数据是什么&#xff1f; 数据是能够反应一定内容的一组数据类型的…

单链表的实现【数据结构】

思考&#xff1a; 1.是否能够将原来指针的方向改为向前指向呢&#xff1f; 2.是否能够有两个指针域的操作呢&#xff1f; 了解&#xff1a; 单链表是应用最广泛的一种形式&#xff0c;还有双向链表以及循环链表&#xff0c;这些都是要进行讨论的 结构体定义的是什么&#xff1f…

(详细图解)VS2017安装教程

VS 2017 版本同 15 版一样&#xff0c;细分为三个版本&#xff0c;分别是&#xff1a; 社区版&#xff08;Community&#xff09;&#xff1a;免费提供给单个开发人员&#xff0c;给予初学者及大部分程序员支持&#xff0c;可以无任何经济负担、合法地使用。企业版&#xff1a…

链表的代码实现【数据结构F】

单链表的特点&#xff1a;每次结点的分配都是动态进行分配的&#xff0c;melloc函数实现的功能是开辟一块新的内存空间&#xff0c;但是返回的是一个地址&#xff0c;只能是地址&#xff0c;没有别名的事情&#xff0c;那就有点难办了&#xff0c;这是一种间接的寻址&#xff0…

(图文详细)如何使用Code::Blocks运行c/cpp文件?

1) 新建源文件 打开 CodeBlocks &#xff0c;在上方菜单栏中选择 “文件 --> 新建 --> 空白文件”&#xff0c;如下图所示&#xff1a; 或者直接按下 Ctrl Shift N 组合键&#xff0c;都会新建一个空白的源文件&#xff0c;如下图所示&#xff1a; 在空白源文件中输入…

数据结构【插入操作具体代码的实现】

插入操作具体代码的实现 单链表delete的操作&#xff1a;

Linux GCC简明教程(编写c语言程序)

市面上常见的 Linux 都是发行版本&#xff0c;典型的 Linux 发行版包含了 Linux 内核、桌面环境&#xff08;例如 GNOME、KDE、Unity 等&#xff09;和各种常用的必备工具&#xff08;例如 Shell、gcc、VIM、Firefox 等&#xff09;&#xff0c;国内使用较多的是 CentOS、Ubunt…

解决VS'scanf':this function or variable may be unsafe.`(VS安全函数问题)

在 VS&#xff08;Visual Studio&#xff09;下编译C语言程序&#xff0c;如果使用了 scanf()、gets()、strcpy()、strcat() 等与字符串读取或操作有关的函数&#xff0c;有时候VS会报错&#xff0c;提示该函数可能不安全&#xff0c;并且建议替换为带有_s后缀的安全函数&#…

双向循环链表【数据结构】

单链表的缺点以及对单链表缺点的改进和双向链表的理解操作 双向循环列表的插入操作 线性结构是一种逻辑结构&#xff0c;顺序存储结构&#xff0c;链式存储结构

什么是编译器?(程序是怎么跑起来的)

我们平时所说的程序&#xff0c;是指双击后就可以直接运行的程序&#xff0c;这样的程序被称为可执行程序&#xff08;Executable Program&#xff09;。在 Windows 下&#xff0c;可执行程序的后缀有 .exe 和 .com&#xff08;其中 .exe 比较常见&#xff09;&#xff1b;在类…