自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++:string的使用

综上,迭代器有4种:iterator、reverse_iterator、const_iterator、const_reverse_iterator。由上述代码可以看到,iterator是类似指针的东西,但不是指针,所有容器都可以用这种类似的方式访问。C++的字符串的类型是string,是一个类类型,而C语言的字符串是char*类型。在字符串中从头开始找指定字符,返回该字符第一次出现的位置,未找到则返回npos。可以用c_str把C++的字符串转成C格式的字符串,从而适配C。可以反向遍历字符串。

2025-10-29 14:58:42 681 2

原创 C++:模板基础和string基础

实现一个交换函数,我们可以用C++的函数重载,使一个Swap函数可以交换int、double、char…类型的两个变量的值。显然,函数重载在这里用起来并不方便。重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数;同时,代码的可维护性比较低,一个出错可能所有的重载均出错。C++有来作为模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码)。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

2025-10-21 13:55:27 703 1

原创 C++:内存管理

例题静态区即数据段,数据段存储全局数据、静态数据,所以在静态区的有globalvar、sGlobalvar、svar。栈存储非静态局部变量、函数参数、返回值等,所以局部变量localvar、数组num[10]、字符数组str1、指针str2和p1都在栈上。指针str2指向的是字符串常量,所以str2指向的abcd在常量区即代码段。malloc在堆上动态开辟空间,p1指向的内容在堆上。

2025-10-10 08:54:23 879 1

原创 C++:类的6个知识点

例如:求1+2+3+…+n,不使用乘除,if…else,switch,while,do…while,for,三目运算符?由于每创建一次就调用一次构造函数Sum(),_i从1开始变化到n,所以_ret就加1,加2,加3……vs2022中不能使用变长数组,所以在函数int Sum_Solution(int n)中去掉参数n进行调试。拙作一篇,望诸位同道不吝斧正。

2025-10-06 15:54:14 974 1

原创 C++:运算符重载

取地址运算符重载分为普通取地址运算符重载和const取地址运算符重载,yi般这两个函数编译器自动生成的就可以够我们用了,不需要去显式实现。除非一些很特殊的场景,比如我们不想让别人取到当前类对象的地址,就可以自己实现⼀份,胡乱返回一个地址。,表明在const成员函数中不能对类的任何成员函数修改,如const修饰Date的Print,由Print(Date* const this)变为Print(const Date* const this)。const修饰成员函数,const放在成员函数参数列表后。

2025-10-03 10:32:55 1060 1

原创 C++:3个类的默认成员函数

默认成员函数即是用户没有显式实现,编译器会自动生成的成员函数。⼀个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个。

2025-09-30 11:55:45 869 1

原创 C++:类初步

由上述代码可以看到,类B、C实例化的对象大小是1字节,这是为了占位标识对象而存在,也可以发现对象确实只存储成员变量。注意:this作为函数的参数,一般认为其存在内存的栈区,但在vs中this存在于寄存器。类是对象的一种抽象描述,限定了类有哪些成员变量,这些成员变量只是声明,没有分配空间,类定义了一个新的作用域,类的所有成员都在类的作用域中,在类外定义成员时,需要使用。对象只储存成员变量,C++中类的实例化对象符合C中结构体内存对齐规则。用类类型在物理内存中创建对象的过程,称为。

2025-09-29 09:00:00 558 1

原创 C++:入门基础语法

为解决命名冲突,C++引入了关键字namespace。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。int a=10;//变量int Add(int x,int y) //函数return x+y;struct Student //类型int score;} //不用加分号namespace只能定义在全局,可以嵌套定义。int a=1;return x+y;char ch;

2025-09-05 14:30:48 1580 1

原创 C数据结构:排序

拙作一篇,望诸位同道不吝斧正。

2025-08-31 16:32:20 1282 1

原创 C数据结构:二叉树(下)

我们先创建一个如下图所示的二叉树。

2025-08-25 12:09:36 1576

原创 C数据结构:二叉树(上)

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。树有一个特殊的节点,称为根节点,根结点没有前驱节点。如图A节点为根节点。节点的度:一个节点含有的子树的个数,如A的度为3。叶:度为0的节点。如图J、F、K、L、H、I。父节点:含有子节点的节点。如A为B的父节点。子节点:B为A的子节点。树的高度:树中节点最大层次。

2025-08-20 18:11:42 1648

原创 C数据结构:队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,具有的特点。入队列:在队尾一端进行插入数据操作。出队列:在队头一端进行删除数据操作。

2025-08-18 09:30:00 1352

原创 C数据结构:栈

是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为,另一端称为。栈中的数据元素遵守的原则。

2025-08-14 09:30:00 1064

原创 C语言:链表经典题

给单链表的头节点head,返回反转后的链表,节点数目为[0,500]。输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]反转链表的关键就是,让第一个节点的next指针指向NULL,再让第二个节点next指针指向第一个节点,直到尾节点的next指针由指向NULL变为指向倒数第二个节点。

2025-08-13 09:45:00 1527

原创 C语言:详解双向链表

双向链表是带头双向循环链表。双向链表的节点由3个部分组成,分别是数据、指向下一节点的指针next、指向上一节点指针prev。对于单链表,指向第一个节点的指针phead为NULL时,链表为空;对于双向链表,链表只有一个头节点时,为空链表,此时phead->next指向phead,phead->prev指向phead。

2025-08-02 09:00:00 1649

原创 C语言:详解单链表与例题

链表根据带头或不带头、单向或双向、循环或不循环分类为8种,最常用的是单链表和双向链表,单链表是链表。链表由节点组成,节点分为两部分,数据和指向下一节点的指针。链表示意图如下:创建头文件SList.h,包含stdio.h、stdlib.h、assert.h,在文件中定义节点结构,声明函数打印链表、尾/头插、尾/头删、查找、定位前插入、定位后插入、删除pos节点、删除pos后节点、销毁链表。创建SList.c文件,在文件中编写函数。打印链表:定义一个指针pcur指向链表首节点,遍历并打印。

2025-07-31 09:30:00 1470

原创 C语言:顺序表(下)

在通过动态顺序表实现通讯录之前,我们仍需要上期的SeqList.h、SeqList.c文件通讯录要保存联系人的姓名、性别、年龄、电话、住址等信息,同时要编写函数实现增加联系人信息、删除指定联系人、查找指定联系人、修改指定联系人、显示联系人信息。创建头文件Contact.h,进行函数声明,将联系人结构体定义在此文件中,并重命名为peoInfo,为了名称一致,把SeqList.h文件中定义的结构体SeqList重命名为Contact。201020100。

2025-07-28 09:30:00 1518

原创 C语言:顺序表(上)

线性表是n个具有相同特性的数据元素的有限序列。、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以和的形式存储。顺序表的是数组,对数组的封装,实现了常用的增删改查等接口。顺序表分为两类:静态顺序表:使用定长数组存储元素。容易出现空间不够用、空间浪费的问题。动态顺序表:空间可以按需申请。接下来以动态顺序表为例,编程实现顺序表。

2025-07-27 20:29:05 1210 1

原创 C语言:详解文件操作

上面说的适用于所有输入流一般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)。

2025-07-24 09:30:00 1654

原创 C语言动态内存管理

C语言引入了动态内存开辟,程序员可以通过malloc、calloc、realloc、free来灵活地申请和释放空间。malloc函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。在上述代码中,我们通过malloc函数开辟了20个字节的空间,并返回一个指向该空间起始地址的整型指针p,用for循环访问和使用这段空间。但是,这段代码还缺少释放这段空间,而free函数能够释放开辟的空间。

2025-07-22 14:34:31 1233

原创 C语言自定义类型:联合体和枚举

像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以是不同的类型。联合体的特点是所有成员共用同一块内存空间,编译器只为最大的成员分配足够的内存空间,所以联合体又叫“共用体”。

2025-07-21 18:04:24 1357

原创 C语言自定义类型:结构体

结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

2025-07-20 09:30:00 1442

原创 C语言内存函数

因为参数n表示的是字节,所以如果要把arr1中的内容拷贝到arr2,就要36个字节,arr1的元素个数为len1,每个元素都是int类型,即36个字节也可表示为len1*sizeof(int)。这是src从前往后拷贝,如果src、dest都从后开始,src拷贝到dest,即5拷贝到7,4拷贝到6,3拷贝到5…所以,memset函数要慎用。例如:将arr[]={1,2,3,4,5,6,7,8,9,10}中的后3个元素拷贝到前3个元素。再例如,处理重叠,把“3,4,5,6,7”换为“1,2,3,4,5”。

2025-07-18 21:03:04 1427

原创 C语言字符函数和字符串函数

字符分类函数能判断一个字符是属于什么字符。使用这些函数需包含头文件。例如,islower函数能判断一个字母是否为小写字母,若是小写字母则返回非零整数,若不是则返回0。参数c是int类型,但也可以输入字符,会自动转为ASCII码值。示例:写⼀个代码,将字符串中的小写字母转大写,其他字符不变。其他字符分类函数都与islower相似,可以参照islower使用。

2025-07-17 16:35:01 1208

原创 C语言指针(4):qsort函数

回调函数是指通过函数指针调用的函数。定义一个返回类型为void类型的函数calc,其参数是一个函数指针。当我们想在switch语句中调用Add、Sub、Mul、Div函数时,只要把函数名作为参数输入calc函数中,即可完成调用。

2025-07-14 16:22:33 1812

原创 C语言指针(3)

整型指针变量的类型是int*类型,字符指针变量的类型即是char*,字符指针变量保存的是字符型数据的地址。我们可以设一个字符指针变量,把一个字符串赋给字符指针变量,这里本质上是把字符串首元素的地址赋给了指针变量。这里就是将字符串“abcefg”中的首元素’a’的地址存放到字符指针变量str中。同时,这里的字符串属于,它有一个特点可以从下面的代码中看出来。

2025-07-13 09:17:51 1255

原创 C语言指针(2)

上期提到,可以看到,arr、&arr[0]、&arr的值都是一样的,区别是arr、&arr[0]加1后都移动4个字节,而&arr加1后移动40个字节,这是因为&arr是整个数组的地址,&arr加1后就跳过了一个数组的长度。

2025-07-12 09:21:02 1193

原创 C语言指针(1)

计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中。内存划分为⼀个个内存单元,每个内存单元的大小取一个字节。我们可以把每个内存单元当成一个房间,而每个内存单元都有⼀个编号,这个编号就相当于房间的⻔牌号。我们根据门牌号找房间,所以门牌号就是房间的,同样地,内存单元的编号就是查找内存单元的地址,C语言中把地址称为。所以,。地址在计算机上用16进制表示,规定16进制数要以0x开头。

2025-07-11 14:51:28 1174

原创 C语言分支和循环语句(下) :猜数字游戏的实现

本期,我们学习了如何生成随机数和怎样实现猜数字游戏,综合运用了C语言的if语句,switch语句,while语句,do…while语句。在日后写代码时,我们要灵活使用C语言分支和循环语句,多练习,多实践。拙作一篇,望诸位同道不吝斧正。

2025-07-05 14:48:44 1213

原创 C语言分支和循环语句(中)

其中,表达式即为, 语句即为。当表达式为真时,执行循环体,然后再判断表达式是否为真,若为真,则执行循环体,若为假,循环结束。如此不断循环,直到表达式为假时,循环结束。。例如:在屏幕上打印1~10。在这段代码中,i为1,条件表达式为真,开始循环。随着循环的进行,i不断加1,最终i大于10,即i<=10为假,循环结束。

2025-07-03 11:16:42 1292

原创 C语言分支和循环语句(上)

在学习C语言分支和循环语句之前,我们先来学习关系操作符、逻辑操作符、条件操作符。

2025-07-02 14:06:52 1181

原创 非科班学生的第一篇博客

我相信有不少人和我一样是非科班的,高考失利了,转专业失败了,跟不上学习进度了…平凡深渊是深不见底的,我们都是其中的小人物,哭是没有用的,喊也是没人听的,我们只有坚持,平常风吹垮不了我们的意志,凡俗尘掩埋不了我们的壮志,我们将用心血浇灌成就之树,用坚持搭建攀登之梯,逃出平凡深渊,在计算机领域做出一份属于我们自己的事业。折戟沉沙志不销,韬光养晦蓄锋芒。待到功成出庐日,卷土重来再争王。亭长破楚开汉世,谁料乞儿复中华。草莽英雄起微末,且看天意幸谁家。

2025-06-23 22:21:49 543 1

空空如也

空空如也

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

TA关注的人

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