- 博客(16)
- 问答 (1)
- 收藏
- 关注
原创 【string类模板】
1. string是表示字符串的字符串类2.该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
2024-05-19 17:25:38
942
7
原创 【C++内存管理】
内置类型用new和malloc没啥区别,但是自定义类型呢?我们定义一个自定义类型的类。这里我们发现,malloc之后想要赋值,但是变量在private中拿不出来。A*p1=new A;//没有默认构造就用带参的构造delete p1;new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数如果不想调用默认的默认构造。
2024-05-11 21:08:04
1490
3
原创 【C++模板入门】
我们要分别定义int类型和double类型的栈,用c语言要写两个几乎一样的,这里可以使用类模板。第三个模板函数可以生成更加匹配的版本,编译器根据实参生成更加匹配的Add函数。2.显式实例化:在函数名后的< >中指定模板参数的实际类型。第二个因为参数类型相同,所以用只有一个参数的函数模板;,只要有新类型出现时,就需要用户自己增加对应的函数。模板参数实例化分为:隐式实例化和显式实例化。我们写类似函数重载的几个函数(以加法为例)我们聪明的编译器是分别调用哪个函数呢?1.重载的函数仅仅是类型不同,
2024-05-10 21:41:03
348
4
原创 【C++之类和对象(下)】
尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化。这里调用的是Stack的默认构造,但是把Stack(size_t capacity = 4)的=4删去,就没办法默认构造,MyQueue也无法生成默认构造。,所以要让MyQueue显示的写默认构造。这就是我们的初始化列表。初始化列表格式:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。初始化列表本质可以理解为对象成员定义的地方,所有的成
2024-04-30 12:31:15
701
2
原创 C++之类和对象(中)
这里有个疑问,不实现构造函数的情况下,编译器会生成默认的构造函数。但是看起来默认构造函数又没什么用。看下面这个例子。
2024-04-23 22:08:26
1821
3
原创 C++之类和对象
为什么两种写法都可以。因为C++兼容C语言,不加struct作为类也可以直接用。//C语言的写法size_t top;//C++的写法Stack* arr;size_t top;但是C语言中一般不用结构体,用class来代替。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号。
2024-04-05 14:10:25
856
5
原创 C语言到C++的跨越(3)
函数重载里面讲过,链接要找函数的地址,而内敛函数中没有函数的地址,因为直接把函数展开了,所以使用内敛函数时,声明和定义要放在一起。对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。因为展开后可执行程序变大,函数规模较小的情况下才可以使用。修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,宏函数不对函数进行展开,会建立函数栈帧,不方便调试。,方便观察与调用,而且还很方便,不容易出错。这里可以看出,没有函数的地址,而是。,内联函数提升程序运行的效率。
2024-04-02 23:48:57
335
6
原创 C语言到C++的跨越(2)
函数重载,是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。会观察的老铁们已经看出来了,满足函数重载的条件大多是(目前不知道是否还有别的可能)对函数参数进行改动,其余都保持不变(这里有几个易错点,改变函数返回值,改变参数名字这些都不能构成重载,而是重复定义)。在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。比如当前a.cpp中调用了b.c
2024-03-31 16:15:41
2097
5
原创 C到C++的跨越(1)
由于在C语言中,一些函数与设置的变量名名字可能会产生冲突int main()return 0;在这里,rand作为C语言的函数和程序中的参数造成了冲突所以为了避免这种情况的发生,C++就运用namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员。这里要注意,一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。
2024-03-29 19:40:42
729
4
原创 指针(C语言的灵魂)
可以看出在程序中,我将void*都强制转换为char*,这是因为char*是一个字节,可以保证每次在比较交换中,不会多或者漏下一个字节进行比较。通过Swap函数,我们也可以看出这里的比较不是一个元素一个元素交换,而是每个元素的各个字节,而width就是每个元素的字节总个数。在我们写程序的时候,有些类型较长,比较麻烦,代码看的也很烦。:sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。:这⾥的数组名表示整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素。
2023-11-18 21:20:08
138
5
原创 好题分享1
1,2.3,4,5,6,7],k=3时,将5,6,7变为7,6,5,把1,2,3,4变为4,3,2,1,最后把[4,3,2,1,7,6,5]最后逆置一次,变为[5,6,7,4,3,2,1],是不是很神奇。但是这样也有问题,当有一个很大的数组以及较大的k,数组就容易越界,因此也不算最优解。但是我们仔细想一想,一个有长度为7的数组,当旋转七次,相当于没有变化。最直接的思路,就是把每次最后一个数字取出来放在一个空变量里面,前面的数字依次后移一个,最后前面空出来一个位置放拿出来的数字,代码也比较容易。
2023-11-06 20:41:25
121
原创 递归与迭代
比如我们要求一个5的阶乘,5*4*3*2*1,如果按照递归的思想,就像剥洋葱,一层一层,所以我们可以先求里面4的阶乘,就是4*3*2*1,以此类推,最后到(1-1)!,也就是1结束,这个就是我们递归结束的条件。函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归,函数调⽤都会开辟属于⾃⼰的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。所以如果采⽤函数递归的⽅式完成代码,递归层次太深,就会浪费太多的栈帧空间,也可能引起栈溢出的问题。递就是递推,归就是回归。
2023-11-05 10:35:28
178
6
原创 调试(透过现象看本质)
因此我们要改变ret的位置,把ret放在j的循环里面,这样每一次的ret都是从1开始了。比如我们想看见第四次循环的结果,除了一直按F10,更加方便的是在prinft前面点F9,鼠标右键点击,出现。如果是左边的内存布局,那随着数组下标的增⻓,往后越界就有可能覆盖到i,这样就可能造成死循环的。使⽤的,因为i的位置在arr前面,所以变量i的地址是较大的。随便打开一个监视1(2,3,4),在监视窗口输入我们想看的值,就可以清晰看见了。的字样,点击它,接着如下图后,在按回车,接着关闭按F5就可以看见第四次结果。
2023-11-02 21:34:47
209
11
原创 关于C语言函数
(拓展一下为什么要叫形参:如果只是定义了add函数,而不去调用,里面的x和y只是形式上存在,不会向内存申请空间,不是真实存在的。5.形参写的也是数组形式,并且在形参书写的时候可以省略元素个数 (一维数组大小可以省略,二维数组行可以省略,列不能省略)。与上面提到的数组不同的是,其他当实参传递给形参的时候,形参是实参的一份临时拷贝,改变形参不会对实参有影响。简单来说,自定义函数里的参数就是形参,主函数使用自定义函数是,()里面的就是实参。**6数组传参后,形参的数组和实参的数组是同一块空间,
2023-10-28 14:03:29
198
12
原创 用C语言制作一个猜数字小游戏
同时这里需要注意,由于可能在玩游戏时,每次时间间隔较短,我们需要将srand函数放在游戏之前。游戏介绍:随机生成1--100的数字,玩家有五次机会进行猜测。rand()%100是用来产生0—99的随机数字,+1之后就是产生1—100的随机数(可以自己带几个数字试试,虽然也有公式,但是不推荐记)。用count为真作为进入主程序的条件,当五次机会用完,count变为0,自动跳出while语句。最后,我们只需要将上面的代码部分块按逻辑拼接起来,这个是最简单的,不过也要细心。这个概念来作为我们的种子。
2023-10-25 23:32:01
627
12
原创 我的第一个博客(关于学习C语言等编程语言的目标)
对于学习C语言来说,由于在高中时期学校有python的课程(浙江特色学科),所以还是比较好上手,虽然C的格式相较于py严谨太多了,现在也在适应中。现在除了上课学习C(我一个有基础的都觉得老师讲的真快),更多的还是在b站上跟着老师学习,觉得用处真的蛮大的。我认为除了跟着老师,更重要的还是要自己把代码敲一遍,虽然是一模一样的,但是自己敲出来的多多少少还是会报错(这里指我)。因为想想一些优秀的前辈一样进入一些大厂实习,我必须得额外的丰富自己的知识,所以也在这里希望各位大佬们能为我这个小白提提建议。
2023-10-11 21:10:56
93
2
空空如也
不知道里面的自定义函数意思
2023-09-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅