自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 vector

reserve和resize不会使v.capacity()缩小,reserve会使capacity扩大,而resize用法与string类似。vector可以看作数组,数组有int,double等等类型。在创建vector对象时要指明类型。

2024-05-21 22:13:58 161

原创 一些常见的但容易出错的点

3.string开空间会开在堆上,在string(可看作字符串顺序表)实现的底层,private中会有char buff[16],超过16长度时采用char* _str,那是因为char buff[]在栈上开空间快,并且出作用域会销毁。在c++中,可以直接string s2(s1)赋值拷贝或直接赋值s1=s3,若想追加字符或字符串时,最常见的就是s2+=‘x’;不管是遍历赋值还是尾插等等,不要忘记后面的\0,不然容易出现段错误,运行超时。2.string的末尾一定要有\0。

2024-05-21 21:48:40 169

原创 string

string是表示字符串的字符串类, 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。1.size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,2. clear()只是将string中有效字符清空,不改变底层空间大小(不改变capacity)。npos是string中一个静态成员,为-1,意思是直到结尾。(可以直接对string对象进行修改)2.用迭代器(比较普遍的一种用法)一般情况下基本都是用size()

2024-04-28 16:43:13 334

原创 编译和连接,预处理详情

基本语法:

2024-02-05 17:11:15 390

原创 C语言中变量的存储类别

2023-12-14 18:01:32 403

原创 文件操作(完整版)

1.定义:磁盘上的文件是文件。程序文件(包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序文件(windows环境后缀为.exe))数据文件(文件的内容不⼀定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件)本次讨论的都是数据文件。2.文件名:⼀个文件要有⼀个唯⼀的文件标识,以便用户识别和引用。文件名包含3部分:文件路径+文件名主干+文件后缀例如: c:\code\test.txt。

2023-12-09 20:42:24 1037

原创 总结C/C++中程序内存区域划分

2023-12-09 18:14:44 333

原创 动态内存管理

有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的使用内存,我们⼀定会对内存的大小做灵活的调整。GetMemory(str)传入的是str的值NULL,开辟的空间只是p指向,str还是NULL不变,• 函数的功能是为 num 个大小为 size 的元素开辟⼀块空间,并且把空间的每个字节初始化为0。• 这个函数调整原内存空间⼤⼩的基础上,还会将原来内存中的数据移动到 新 的空间。• 如果参数 ptr 指向的空间不是动态开辟的,那free函数的行为是未定义的。

2023-12-08 21:33:39 856

原创 自定义类型——联合体,枚举

1.联合体与结构体类似,可以有不同类型成员。{}中的内容是枚举类型的可能取值,也叫。联合体中给一个成员赋值,其他都会改变。4.一个应用——判断大小端。

2023-12-01 20:36:31 363

原创 自定义类型——结构体

所以不能对位段的成员使用&操作符,这样就不能使用scanf直接给位段的成员输入值,只能是先输入放在⼀个变量中,然后赋值给位段的成员。答案是可以,但是不可以直接引用,否则在计算sizeof(结构体)时就结构体套结构体,无穷尽了,不符合。2.如果传递⼀个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。就不对了,是因为编译器会把上⾯的两个声明当成完全不同的两个类型,所以是非法的。char类型,一个字节一个字节开辟,a占3个bit,b占4个,以此类推。如何既满足对齐,又节省空间?

2023-12-01 20:03:32 365

原创 数据在内存中的存储

2.在计算机系统中,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8bit 位,但是在C语⾔中除了8 bit 的 char 之外,还有16 bit 的 short 型,32 bit 的 long 型(要看具体的编译器),另外,对于位数⼤于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度⼤于⼀个字节,那么必然存在着⼀个如何将多个字节安排的问题。1.超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储。

2023-11-29 20:06:47 783

原创 C语言内存函数及模拟实现

3. 如果source和destination有任何的重叠,复制的结果都是未定义的。的数据到destination指向的内存位置。1.memcpy从source的位置开始向后。2.其他情况都可以:后–>前。模拟实现:(与上文相同)

2023-11-25 20:32:34 367

原创 字符串相关的函数及模拟实现

因为指针str在while循环中会一直向后走,一直走到"\0",所以出循环的str已经不是最初的那个了。3.源字符串必须以 ‘\0’ 结束, 会将源字符串中的 ‘\0’ 拷⻉到⽬标空间。• ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。strlen()传入的是指针,字符串名即为字符首元素地址。• ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。2.目标空间是可修改的(不能常量字符串)。• 源字符串必须以 ‘\0’ 结束。1.解引用,一直到“\0”1.目标空间必须足够大;• ⽬标空间必须可修改。

2023-11-24 22:04:19 410

原创 sizeof 和 strlen

1.strlen是库函数,应用时需要包含头文件#include <string.h>;2.只针对字符串,求的是字符串长度,即strlen找的是\0之前的字符个数;3.如果找不到\0,strlen会一直往后找,很可能越界,出一个随机数。3.sizeof不挑类型,不关注内存中放什么类型数据;4.sizeof在计算字符串大小时,会算上后面的\0。2.计算的是操作数所占内存的大小,单位是字节;1.sizeof是操作符;

2023-11-20 11:48:47 33

原创 C语言--指针(4)

当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。如图1,使用switch语句,随着计算器功能的增加,case也在增加,而每一段case语句中都有很多相似的代码,显得冗余。之前的冒泡排序只能排序整型元素,其它类型的不能,而qsort可以实现任意数据的排序。compar:函数地址,该函数用来比较两个元素,需要自己写出。这样就简化了,当输入的为1~4的数字,则调用对应函数。

2023-11-17 17:38:32 54 1

原创 C语言--指针(3)

2.str3和str4是指针,"hello bit."是常量,在系统中地址唯一,常量字符串的值为首字符的地址,储存在str3和str4中,也是一样的所以same。1.str1[]和str2[]分别是两个字符数组,属于两个变量,创建时分配的地址不一样,单独拿出str1和str2指的是它们分别对应的首元素地址,一定不同;typedef 是⽤来类型重命名的,可以将复杂的类型,简单化。字符数组,每个元素都是字符类型;整型数组,每个元素都是整型类型;(只是模拟出二维数组的效果,并不是真正的二维数组)

2023-11-14 21:52:13 50 1

原创 C语言——指针(2)

1.传址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量;2.未来函数中只是需要主调函数中的。

2023-11-13 11:37:20 42

原创 C语言---指针(1)

1.计算机把内存划分为一个个小单元格,每个单元格占一个字节。2.每个内存都有一个编号,这个编号叫做地址,C语言中把地址叫做“指针”。编号=地址=指针。

2023-11-08 16:32:34 46 1

原创 操作符详解

(2)16进制的数字每⼀位是0~9,a ~f的数字,各⾃写成2进制,最多有4个2进制位就⾜够了,所以在2进制转16进制数的时候,从2进制序列中。如图:最终输出的是10000000000000000000000000000101 ---->-5。111111111111111111111111111111111010 -----反码。111111111111111111111111111111111010 -----反码。10000000000000000000000000000101 — -5的原码。

2023-11-05 23:05:45 60

原创 斐波那契数列全解

1.递归思想(执行效率低,做题时很可能超时)3.数组(大佬提供)

2023-11-04 10:24:48 80 1

原创 函数递归的应用及与迭代等方法的切换

通俗讲就是“只要条件满足,就自己调用自己,条件不允许时才递归”。递归形式(效率很低,做题的话可能超时)(2)按顺序打印整数的每一位。

2023-11-04 10:14:53 53 1

原创 static与extern的用法

先引入两个概念。

2023-10-29 20:00:40 33

原创 C语言——函数

ret_type fun_name(形式参数)通俗来讲就是:函数返回值类型 函数名(形式参数)函数体(用来描述函数完成任务的过程)注意:1.调用函数时,函数有没有返回值都可以直接:函数名(实参);调用。2.但若有返回值,返回值就是返回出来的一个数,若想打印出来还要用printf(普通单纯的函数调用可以理解为你昨天做了一件事,没人知道;而printf函数是把你做的这件告诉别人)。编译器编译代码时,会从上往下进行扫描,所以要先声明函数再使用。函数的声明是一种特殊的定义。

2023-10-28 11:17:25 26 1

原创 数组的有关知识

取地址(因为打印的是整型,所以每个都是相差4bit,以下是在十六进制下显示)若要打印特定元素,则需要其下标(数组与其下标的对应关系)下标是从0开始。(2)二维数组(注:初始化可以省略行,但不能省略列)方法:算出整个数组所占内存大小,除以单个占内存大小。,找数组元素下标(只适用于升序/降序数组)数组是一组相同类型元素的集合。但数组中元素个数不能为0.1.%p是用来打印地址的。

2023-10-25 15:39:33 40 2

原创 求阶乘之和(题目)

【代码】求阶乘之和(题目)

2023-10-24 15:58:45 23

原创 写出100~200之间的素数,并求其个数(题目)

【代码】写出100~200之间的素数,并求其个数(题目)

2023-10-23 11:40:09 36 1

原创 goto用法

循环想提前跳出要用break,但是当多次循环都存在时,用goto直接跳出更方便。但程序中多次使用goto有一定风险。

2023-10-23 11:38:37 26 1

原创 break和continue的用法

continue作用是用来跳过本次continue后面的代码,直接去判断部分。break作用是跳出整个循环,不管之后还有多少次。

2023-10-23 11:36:37 29 1

原创 输入一个数,计算其位数(题目)

【代码】输入一个数,计算其位数(题目)

2023-10-23 11:34:23 37 1

原创 随机数的生成及基准值改变,time函数的使用

【代码】随机数的生成及基准值改变,time函数的使用。

2023-10-23 11:32:51 42 1

原创 多组输入用while

【代码】多组输入用while。

2023-10-21 21:01:14 24

原创 (题目)按从大到小的顺序输出abc

【代码】(题目)按从小到大的顺序输出abc。

2023-10-21 20:57:56 69

原创 while for循环

【代码】while for循环。

2023-10-21 20:55:54 20

原创 switch语句

【代码】switch语句。

2023-10-21 20:48:38 20

部分c++笔记,主要是类和对象部分

部分c++笔记,主要是类和对象部分

2024-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除