首页 > 其他分享 >day9

day9

时间:2023-08-27 22:00:19浏览次数:23  
标签:符号表 指向 day9 对象 内存 引用 指针

1.简述c语言和c++的区别?
1)c语言是面向过程的语言,是结构化语言,考虑如何通过一个过程对输入进行处理来得到输出的结果;c++是面向对象的语言,主要特征是“封装、继承和多态”,封装就是以及隐藏内部的实现细节,使得代码模块化。继承就是派生类可以继承父类的数据和方法,扩展了父类中以及存在的模块,实现了代码的重用。多态就是“一个接口,多种实现”,通过派生类重写父类的虚函数,实现了接口的重用,

2)c和c++中动态管理内存的方式不一样,c是用malloc/free,而c++是用new和delete关键字

3)c++中有引用,c中不存在引用的概念

2.指针和引用的区别?
1)指针可以被重新赋值给另外一个不同的对象,而引用总是指向在初始化指定的对象,以后不能改变,但是指向的对象的内容可以改变

2)从内存内配上看,程序为指针变量分配内存空间,而不为引用分配内存,引用初始化时必须指向一个对象,引用与这个对象共享内存空间。

3)从编译上看,程序在编译时分别将指针和引用添加到 符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而 引用在符号表上对应的地址值为 引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。这是使用指针不安全而使用引用安全的主要原因。从某种意义上来说 引用可以被认为是不能改变的指针。

4)不存在指向空值的引用这个事实,意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。

5)理论上,对于指针的级数没有限制,但是引用只能是一级。如下:
int** p1; // 合法。指向指针的指针
int*& p2; // 合法。指向指针的引用
int&* p3; // 非法。指向引用的指针是非法的
int&& p4; // 非法。指向引用的引用是非法的
注意上述读法是 从左到右

3.结构体和共同体的区别?
结构体:将不同类型的数据组合成一个整体,是自定义类型
共同体:不同类型的几个变量共同占用一段内存

结构体中的每个成员都有自己独立的地址,他们是同时存在的

共同体中的成员占用同一段内存,他们不能同时存在

sizeof(struct)是内存对齐后所有成员长度的总和,sizeof(union)是内存对齐后最长数据成员的长度、

 

4.#define和const的区别?
1.define定义的常量没有类型,是个立即数,const定义的常量有类型名字,存放在静态区域

2.处理阶段不同,#define定义的宏变量在预处理时进行替换,可以有多个拷贝,const定义的变量在编译时确定值,只有一个拷贝

3.#define定义的常量不可以用指针去指向,而const定义的常量可以用指针去指向

4.#define可以定义简单的函数,而const不可以定义简单的函数

 

5.new、delete和malloc、free的区别?
1)malloc对分配的内存空间大小严格规定的,而new不需要

2)new为对象开辟空间时,会调用对象的构造函数,delete为对象释放空间时,会调用析构函数

 

标签:符号表,指向,day9,对象,内存,引用,指针
From: https://www.cnblogs.com/skural/p/17660961.html

相关文章

  • [刷题记录Day9]Leetcode
    建议跳过No.1题目找出字符串中第一个匹配项的下标思路KMP代码No.2题目重复的子字符串思路KMP代码......
  • 每日一练 | 华为认证真题练习Day96
    1、下列协议中属于动态IGP路由协议的是?A.StaticB.BGPC.OSPFD.Direct2、路由器进行数据包转发时需要修改数据包中的目的IP地址。A.对B.错3、route-static10.0.2.2255.255.255.25510.0.12.2preference20,关于此命令说法正确的是?A.该路由一定会出现在路由表当中B.该路由的......
  • LRU机制:哈希表+双向链表 [labuladong-刷题打卡 day9]
    今天的知识点LRU缓存机制的实现。学过计组都知道LRU算法(leastrecentlyused最近最少使用算法)是资源管理中的常用算法。那么他是如何实现的呢?LRU原理和Redis实现146.LRU缓存此题算是对LRU机制的一个简化。为了使查找删除在O(1)中实现,我们结合哈希表和双向链表各自在查找和......
  • 每日一练 | 华为认证真题练习Day92
    1、TFTP基于TCP协议。A.对B.错2、Trunk类型的端口和Hybrid类型的端口在接收数据帧时的处理方式相同。A.TrueB.False3、以下哪种PPPoE的报文是非单播方式发送的?A.PADSB.PADIC.PADOD.PADR4、HDLC帧由以下哪些字段组成?(多选)A.控制字段(C)B.帧校验序列字段(FCS)C.地址字段(A)D.标......
  • 8.2 day9图论+dp
    100+70+70+20=260感觉如果时间够感觉还能写一下,结果T3超大数据结构写死了T1观察到最短路径仍然最优,直接dij即可,注意判断终点不用等红灯T2暴力是\(O(n^4)\)的,是dp,但是我写的是分层图,同样时间,还没有优化空间,寄设计\(dp_{i,j}\)为跳到\((i,j)\)所需最小花费每次从所有点转移,算......
  • 第三阶段C++提高编程(黑马程序员)——Day9
    2STL初识2.1STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西C++的面向对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准诞生了STL2.2STL基本概念STL(StandardTemplateLib......
  • 8.1 day9搜索
    0+50+100+0=150第一题本地没re,交上去re了,发现是函数int没returnO2导致的,但是本地也开了O2,没有问题T1中缀转后缀,然后全排列T2枚举每一位是否填1,倒序开搜+小剪枝即可,最科学的是一种背包的剪枝,和我最终提交代码很像,但是我的优化还不够T3ida,限制深度,个数可看成矩阵乘法T4正......
  • day9
    一、Nyan_Cat1.Audacity打开,发现一个单声轨和一个立体声轨,立体声轨的其中的第一部分明显不同,先分离2.简单看一下幅度值,发现后半部分呈规律性表现,高低区分较大,导出单声道,使用脚本打印一下幅度值点击查看代码importwaviowav_data=wavio.read('./Nyan_Cat1.wav')sound_da......
  • vue-day9--事件修饰符
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>Document</title><script......
  • 算法练习-day9
    栈和队列232.用栈实现队列题意:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)实现MyQueue类:voidpush(intx):将元素x推到队列的末尾intpop():从队列的开头移除并返回元素intpeek():返回队列开头的元素booleanempty():如果......