- 博客(11)
- 收藏
- 关注
原创 C++之深拷贝与浅拷贝的区别
1.什么拷贝构造函数?同一个类的对象在内存中有完全相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员,而函数成员是共用的(只有一份拷贝)。在建立对象时可用同一类的另一个对象来初始化该对象的存储空间,这时所用的构造函数称为拷贝构造函数。2.深拷贝与浅拷贝的区别?首先简单的理解就是:假如B复制A,如果改变A,则B也被改变,就是浅拷贝假如B复制A,A改变,则B不变,就是深拷贝。更深层的理解:对于浅拷贝来说,只是增加了一个指针指向已经存在的内存。
2022-05-22 15:53:45
1433
原创 C++内存管理之new/delete及其与malloc/free的区别
new的三种用法:1.new运算符的使用2.new函数的使用3.定位new的使用new/delete与malloc/free的区别new的三种用法:1.new运算符的使用int main(){ int n = 10; int* ipa = new int(10); int* ipb = new int[n](10);//创建了数组 int* ipc = new int[n] {1, 2, 3, 4, 5, 6, 7};//创建了一个数组并初始化 delet
2022-05-17 17:55:44
155
原创 编译和链接--被隐藏了的过程
代码内部实现的过程#include<stdio.h>int main(){ printf("Hello World!"); return 0;}在Linux下,当我们使用GCC来编译Hello World程序时,只需要使用最简单的命令(假设源代码文件名为hello.c):#gcc hello.c#./a.outhello world事实上,对于上述过程可以分为四个过
2022-05-12 12:36:18
99
原创 数据结构之单链表的就地逆置(方法一:三指针法)
【问题分析】单链表的逆置就是将表中内容由原来的(a1,a2,a3,...,an)转换为(an,an-1,...a3,a2,a1)。就地逆置就是不需要额外的申请结点空间,只需要利用原有的表中的结点空间。上图中第一个链表就是原有的带头结点初始链表,第二条链表为逆置后的链表。在解决链表的问题中,画图是一个重要的解决问题的手段。【解答一】:三指针法 第一步:定义三个指针 pre,s,p,并将其初始化pre=NULL,s=NULL,p=head->next,然后判断p是否为空。第二...
2022-05-10 19:07:51
5142
1
原创 线性表之(定长/动态)顺序表基本操作(C语言实现)
目录1.线性表的类型定义2.定长顺序表的实现和表示3.动态顺序表的实现和表示1.线性表的类型定义 在数据结构中线性表是最常用且最好用的一种结构,线性结构的特点是在数据元素的非空有限集合中,除第一个元素无直接前驱、最后一个元素无直接后继外,集合中其余每个数据元素均有唯一的直接前驱和直接后继。 通俗的理解直接前驱和直接后继:在食堂排队打饭时,除队头和队尾两人外,一个人的前面紧挨那个人就成为直接前驱,后面紧挨着的人叫直接后继,排在队头第一个的人称为第一个元素,队尾最后一...
2022-01-26 15:02:02
785
原创 C语言中for\while\do...while循环结构(以统计数字位数为例)
目录while语句详解 do...while语句详解 for语句详解引言在现实生活中,如果有人想让我们多次重复地做同一件事情,这就和会让人感觉非常烦恼。但是对于编程中便不必如此懊恼。计算机只是一个工具,程序员才是王者。程序员只需要制定规则,其他繁琐的事情便都交给计算机去完成。所以,在程序开发过程中,需要进行多次循环操作时,我们会选择使用合适的循环结构来完成。1.1 while语句的格式while(表达式){ 循环体;}只要表达式为真,那么就执行循环体内...
2021-10-23 15:59:23
2582
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人