![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c++知识点总结及面试问答
文章平均质量分 70
本专栏适合那些想要深入学习C++和即将找工作面试的同学,将按照一定的逻辑顺序为读者提供各种C++相关的知识点,并附有面试知识问答。 专栏将涵盖C++的基础语法、函数和类的使用、STL标准库、多线程编程、网络编程、算法和数据结构等多个方面。读者们可以在短时间内掌握C++的核心知识及面试问答知识。
BLFaker84516
热爱编程、热爱生活!各种DIY设计,有想法,有行动!感谢大家关注收藏,不定期分享好项目源码及教程。
下载后,有问题请及时私信沟通,欢迎提问,欢迎来撩!
展开
-
CMake学习详解
目录转到 -> [[…/目录|目录]]原创 2024-05-02 11:15:00 · 97 阅读 · 0 评论 -
C++11数量不定的参数模板
目录转到 -> [[…/目录|目录]]原创 2024-05-02 12:00:00 · 36 阅读 · 0 评论 -
C++入门学习笔记
目录转到 -> [[…/目录|目录]]原创 2024-05-01 11:15:00 · 26 阅读 · 0 评论 -
C++二维数组中的查找
该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来快速地缩小查找区间,每次减少一行或者一列的元素。当前元素的查找区间为左下角的所有元素。给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。要求时间复杂度 O(M + N),空间复杂度 O(1)。其中 M 为行数,N 为 列数。原创 2023-11-23 06:45:00 · 325 阅读 · 0 评论 -
C++数组中重复的数字
对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。在调整过程中,如果第 i 位置上已经有一个值为 i 的元素,就可以知道 i 值重复。在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。原创 2023-11-23 10:00:00 · 270 阅读 · 0 评论 -
ELF修复基本工作原理
ELF(Executable and Linkable Format)是一种常见的可执行文件和可链接文件的格式,广泛用于Linux和UNIX系统中。ELF修复是指对ELF文件进行修改或修复,以确保其正确加载和执行。ELF修复的基本工作原理如下:识别ELF文件:首先,需要识别和验证目标文件是否为有效的ELF文件。这可以通过检查文件的魔数(Magic Number)来完成,ELF文件的魔数是一个特定的字节序列,用于标识文件格式。原创 2023-08-23 13:45:00 · 266 阅读 · 0 评论 -
使用CMake编译进行apk编译+关于Android10 使用GLES图层问题
renderdoccmd使用安卓启动后,第一个加载的so文件. 这里面是跨平台实现的.原创 2023-08-24 08:00:00 · 162 阅读 · 0 评论 -
数据宽度、KEIL汇编和GNU汇编的区别
导入窗口仅显示二进制文件想要动态加载器自动处理的符号,二进制文件选择使用 dlopen/dlsym 或 LoadLibrary/GetProcAddress 等机制自行加载的符号将不会在导入窗口中显示。导入窗口还提供与 objdump (-T) 、 readelf (-s) 和 dumpbin (/IMPORTS) 等命令行工具类似的功能。因为 IDA 是一种静态分析工具,它无法获知程序在执行时会在这个内存位置输入什么地址。原创 2023-08-22 16:00:00 · 107 阅读 · 0 评论 -
虚函数_虚函数表_虚函数调用_单继承无函数覆盖
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PWxylInr-1692609884858)(https://cdn.jsdelivr.net/gh/nzcv/picgo/20211220214019.png)]通过x10寄存器来确认具体应该调用哪一个函数。覆盖了哪个函数在哪个虚函数表。几个父类几个虚函数表。原创 2023-08-22 10:30:00 · 72 阅读 · 0 评论 -
模板函数实现交换_折半查找_友元函数_运算符重载
C++为了规避指针的灵活性, 使用引用类型达到相同目的, 底层没区别. 但是更加安全。成员函数有this指针, 友元函数没有this指针。原创 2023-08-21 21:45:00 · 117 阅读 · 0 评论 -
二叉树遍历解析
二叉树的定义可以先通过下图有一个直观了解。)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉树的分支具有左右次序,不能随意颠倒。这个图里面,有两个比较特殊的二叉树,分别是编号2和编号3这两个。其中,编号2的二叉树中,叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点,这种二叉树就叫做满二叉树。编号3的二叉树中,叶子节点都在最底下两层,最后一层的叶子节点都靠左排列。原创 2023-03-12 10:36:07 · 119 阅读 · 0 评论 -
笔试中对链表题的总结
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4iOeojOe-1677858146436)(…/…/data/images/circle.png)]对于链表环的问题,潜在的一个结论是从快慢指针的相遇点到环的入口节点B的距离和头节点到环的入口节点B的距离是相等的,即ABCBAB = CBABCB。具体证明可以通过以下两种方法分析:先设两个指针:快指针fast(比慢指针多走一步)和慢指针slow,链表有环的前提下,它们必然相遇,假设相遇于节点C。因为fast。原创 2023-03-03 23:43:16 · 376 阅读 · 0 评论 -
对链表学习的总结一
C/C++ 数组:一组具有相同类型数据的集合。结构体:不同类型数据的集合。int val;} };原创 2023-03-03 23:43:50 · 400 阅读 · 0 评论 -
LeetCode热题100
精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。原创 2023-02-24 22:07:20 · 667 阅读 · 0 评论 -
搞清楚动态库和静态库的区别
一般来说,一个程序,通常都会包含目标文件和若干个库文件。经过汇编得到的目标文件再经过和库文件的链接,就能构成可执行文件。库文件像是一个代码仓库或代码组件的集合,为目标文件提供可直接使用的变量、函数、类等。库文件包含了静态链接库和动态链接库两种。两者最根本的区别在与在程序编译的过程中,如何处理库文件和目标文件的链接关系。原创 2023-02-15 23:11:15 · 142 阅读 · 0 评论 -
动态库和静态库的区别
一般来说,一个程序,通常都会包含目标文件和若干个库文件。经过汇编得到的目标文件再经过和库文件的链接,就能构成可执行文件。库文件像是一个代码仓库或代码组件的集合,为目标文件提供可直接使用的变量、函数、类等。库文件包含了静态链接库和动态链接库两种。两者最根本的区别在与在程序编译的过程中,如何处理库文件和目标文件的链接关系。原创 2023-02-14 23:40:17 · 292 阅读 · 0 评论 -
一文弄懂硬链接、软链接、复制的区别
原理:每对file1增加一个硬连接,系统对file1的对应的inode(硬盘数据节点)的连接数加一。当删除file1或file2等其它硬连接时,对磁盘对应的数据节点连接数减一,只有当连接数为0时,才真正的删除数据。**但是A的数据块中存放的只是B的路径名(**可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。若强行编辑file2并保存,系统会生成文件file1,内容为file2编辑的内容。修改file2,file1会变。原创 2023-02-14 23:40:44 · 532 阅读 · 0 评论 -
【C++学习总结】如何禁止类被其他类继承
如果是仅仅为了达到这个目的可以直接把这个类的构造函数设置成私有的,这样就杜绝了其他类的继承。也相当于毁掉了这个类(无法再创造出自己的对象)。那么怎么样既要保证这个类的完整性,又防止其他类的继承呢?如何在防止一个类被其他的类继承呢?原创 2023-02-14 23:39:01 · 216 阅读 · 0 评论 -
C++中extern、static、const、volatile等关键字详解
作用静态变量只初始化一次,未初始化的静态变量会默认初始化为0。静态全局变量只在本文件可见,外部文件无法访问。而静态局部变量只在定义的作用域内可见,但他们的生存周期都是整个程序运行时期。static修饰的函数只允许在当前文件中使用,在其他文件中无法找到该函数的地址。不可以被其他文件引用,且不会与其他文件中的同名函数冲突。常对象:常函数:顶层const和底层const1.顶层const表示指针本身是一个常量。(指针常量)int i = 0;int *const p1 = &i;const int ci =原创 2023-02-13 23:36:50 · 443 阅读 · 0 评论 -
了解一下C++命名规范
(详细介绍类变量如何命名)原创 2023-02-13 23:35:57 · 383 阅读 · 0 评论 -
【C++笔试问答】处理各种输入输出的解决方法
注意:数组的最后一个字符会是‘\0’,设接收字符数目为n,如果输入的字符串大于等于n,则实际接收到的输入是字符串的前面n-1个字符,包括空格(不包括回车,遇到回车就结束了),会自动在后面增加一个‘\0’。2、输入的是带空白的字符串,这种情况比较可恶,因为 scanf 和 cin 都是读到空白就结束的,这时候就得使用上面知识点讲到的 getline(cin, string s) 来读取了。cin.get(字符变量符),用来接收字符,只获取一个字符,可以接收空格,遇到回车便结束。,最后一个字符为‘\0’。原创 2023-02-13 23:34:04 · 367 阅读 · 0 评论 -
【c++面试问答】常量指针和指针常量的区别
②对于 int *const p2=&c,现将const和p2结合,即p2首先是一个常量,然后再左结合*,即指针常量,它本身是一个常量,因此我们不能改变p2本身。另外因为p2本身是const,而const必须初始化,因此p2在定义时必须初始化,即不能直接 int *const p2;①对于 int const *p1=&b,先将*和p1结合,即p1首先是一个指针,然后再左结合const,即常量指针,它指向了const对象,因此我们不能改变 *p1的值。指针(*)和常量(const)谁在前先读谁;原创 2023-02-12 19:20:42 · 1826 阅读 · 3 评论 -
【C++面试问答】虚函数可以声明为inline吗
在程序中的每个调用点将函数体展开,而不是按照通常的函数调用机制取调用,从而减少调用函数花费的额外开销。虚函数一般不能声明为inline的,因为inline函数是在编译期将函数内容替换到函数调用处的,是静态编译的。● 通常只有函数非常短小的时候(如10行代码内)才适合定义成inline函数,否则会导致程序变慢。● 定义在class内的成员函数默认是inline函数(虚函数除外),因为虚函数是在运行时动态调用的,编译器并不知道它绑定的是哪个对象。● (缺点)inline函数会增加执行文件的大小。原创 2023-02-12 19:19:08 · 1078 阅读 · 0 评论 -
【C++面试问答】搞清楚深拷贝与浅拷贝的区别
C++中,浅拷贝不需要自己实现,编译器会自动生成缺省的拷贝构造函数,浅拷贝新旧对象共享一块内存,任何一方的值改变都会影响另一方;深拷贝需要自己手动编写拷贝构造函数,深拷贝新旧对象不共享内存。原创 2023-02-11 22:14:22 · 2609 阅读 · 1 评论 -
【c++面试问答】全局变量和局部变量的区别
● 使得静态局部变量内存分配在静态数据区,导致延长了生命周期。● 使得静态全局变量无法被其他文件使用,局限了其文件对外链接。C++中的全局变量和局部变量有什么区别?中也有过总结,这里再汇总一下。注:内容全部参考自文末的参考资料。这部分内容在C++问题。原创 2023-02-11 22:12:39 · 585 阅读 · 0 评论 -
【C++面试问答】strcpy_strncpy_memcpy的区别
将字符串 src 中最多 n 个字符复制到字符数组 dest 中(它并不像 strcpy 一样只有遇到 NULL 才停止复制,而是多了一个条件停止,就是说如果复制到第 n 个字符还未遇到 NULL,也一样停止),返回指向 dest 的指针。只适用于字符串拷贝。:strcpy 是不安全的,strcpy 在遇到结束符时才会正常的结束运行,会因为 src 长于 dest 而造成 dest 栈空间溢出以致于崩溃异常,它的结果未定,可能会改变程序中其他部分的内存的数据,导致程序数据错误,不建议使用。原创 2023-02-10 08:17:34 · 227 阅读 · 0 评论