结构体和共用体的区别
结构体不再展开说明,具体对昨天面试问题中题目涉及知识点进行补充。
补充:同种结构体可以直接进行整个附值。
共用体
union 叫共用体,又叫联合、联合体。“联合体”是一种特殊的类,也是一种构造类型的数据结构。
这些数据共享同一段内存,以达到节省空间的目的。
关于大端小端
大端:高位字节放在地地址
小端:低位字节放在高地址
题目:
题目1链接
注意:32位和64位表示CPU一次能处理的最大位数。但是各种数据(绝大多数,除了long)类型占用的字节数是相同的.
这个问题详细解答
字符串占空间问题
完全二叉树节点关系
棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。
完全二叉树的总结点数目和叶子结点个数关系:
如果是偶数个节点,叶子节点等于总节点除以2, 即 N % 2==0, n = N/2
如果是奇数个叶子节点等于(总节点+1)除以2, 即 N % 2 == 1, n = (N+1)/2
即向上取整。
推导可参考:https://blog.csdn.net/stpeace/article/details/40210563
题目:
一个完全二叉树有770个节点,那么其叶子的个数为:385个
关于宏定义的易错题
答案:宏是完全的文本替换,宏替换时容易犯的错误。使用宏时,带上括号是安全的做法。3*5+4=19,故选D
堆(heap)内存与栈(stack)内存的区别
首先区别堆栈分别在数据结构中的定义和在内存中定义的区别:
数据结构中描述堆栈:
堆(heap):是一种非连续的树形存储数据结构,每个节点存在一个值,整个树是经过排序的,特点是根节点最小(小顶堆)或根节点最大(大顶堆),且根节点的两个子树也是一个堆。常用来实现优先队列,存取随意。
栈(stack):是一种连续存储的数据结构,具有先进后出的性质。通常的操作有入栈(压栈),出栈和栈顶元素。想要读取某个元素就要将之前的元素全部出栈,才能完成。
原文链接:https://blog.youkuaiyun.com/lj130lj/article/details/83690820
内存中的栈区与堆区:
内存:计算机中的随机存储器(RAM),程序都在这里运行。
栈内存:编译器自动分配和释放,存放函数的参数,局部变量,临时变量等等。
堆内存:为成员分配和释放,由程序员自己申请,自己释放。如果没有手动释放,再程序结束时由操作系统自动回收,稍有不慎会发生内存泄漏,典型为使用new申请堆内存
其他区别参考这个博主的:https://blog.youkuaiyun.com/lj130lj/article/details/83690820
完成,后续任务,每天有空都要刷刷面试题库:https://www.nowcoder.com/questionCenter?mutiTagIds=640