自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++初级:类和对象(中)

无参构造函数、全缺省构造函数、我们不写构造时编译器默认生成的构造函数,都叫做默认构造函数。

2025-03-10 22:54:41 688

原创 C++初阶:类和对象(上)

再分析一下,对象中是否有存储指针的必要呢,Date实例化d1和d2两个对象,d1和d2都有各自独立的成员变量 _year/_month/_day存储各自的数据,但是d1和d2的成员函数Init/Print指针却是一样的,存储在对象中就浪费了。这里需要再额外哆嗦一下,其实函数指针是不需要存储的,函数指针是一个地址,调用函数被编译成汇编指令[call 地址],其实编译器在编译链接时,就要找到函数的地址,不是在运行时找,只有动态多态是在运行时找,就需要存储函数地址,这个我们以后会讲解。

2025-02-26 23:08:32 858

原创 C++初阶:C++入门基础

• 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2025-02-25 22:40:22 977

原创 数据结构:排序

1. 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用2. 时间复杂度:O(N^2)3. 空间复杂度:O(1)4. 稳定性:不稳定。

2025-02-23 21:41:59 795

原创 数据结构:二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继 因此,树是递归定义的。 注意:树形结构中,子树之间不能有交集,否则就不是树形结构 结点的度:一个结点含有的子树的个数称为该

2025-02-20 22:40:28 1175

原创 数据结构:栈和队列

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,。出栈:栈的删除操作叫做出栈。。

2025-02-19 22:07:55 535

原创 数据结构:顺序表和链表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结 构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物 理上存储时,通常以数组和链式结构的形式存储。

2025-02-18 22:47:22 623

原创 数据结构:算法的时间复杂度和空间复杂度

如何衡量一个算法的好坏呢?斐波那契数列的递归实现方式非常简洁,但简洁一定好吗?那该如何衡量其好与坏呢?

2025-02-17 22:09:08 888

原创 数据结构初阶:前言

数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种w或多种特定关系的 数据元素的集合。算法(Algorithm): 就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

2024-11-15 22:44:45 677 1

原创 C语言:预处理详解

基本语法:#define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。思考:在 define 定义标识符的时候,要不要在最后加上;?建议不要加上;,这样容易导致问题。max = MAX;

2024-11-13 21:47:20 611

原创 C语言:编译和链接

我们在 test.c 文件中每一次使用 Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地址,但是由于每个文件是单独编译的,在编译器编译 test.c 的时候并不知道 Add 函数和 g_val 变量的地址,所以暂时把调用 Add 的指令的目标地址和 g_val 的地址搁置。就是根据汇编指令和机器指令的对照表一一的进行翻译,也不做指令优化。将源代码程序被输入扫描器,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成一系列的记号(关键字、标识符、字⾯量、特殊字符等)。

2024-11-12 21:41:52 1133

原创 C语言:文件操作

磁盘(硬盘)上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的⻆度来分类 的)。上⾯说的适用于所有输入流一般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)。

2024-10-24 22:49:13 1013 1

原创 C语言:动态内存管理

C/C++程序内存分配的几个区域:1. 栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内 存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。2. 堆区(heap):⼀般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式类似于链表。3. 数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。

2024-10-23 21:38:01 872

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

上述的结构其实设计的很简单,用起来也方便,但是结构的设计中包含了所有礼品的各种属性,这样使得结构体的大小就会偏大,比较浪费内存。使用联合体是可以节省空间的,举例: 比如,我们要搞一个活动,要上线一个礼品兑换单,礼品兑换单中有三种商品:图书、杯子、衬衫。联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)。在C语言中是可以的,但是在C++是不行的,C++的类型检查比较严格。{}中的内容是枚举类型的可能取值,也叫枚举常量。

2024-10-22 22:12:25 808

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

位段的声明和结构是类似的,有两个不同:1. 位段的成员必须是 int、unsigned int 或signed int ,在C99中位段成员的类型也可以选择其他类型。2. 位段的成员名后边有一个冒号和一个数字。int _b : 5;A就是一个位段类型。那位段A所占内存的大小是多少?

2024-10-20 14:15:28 1089

原创 C语言:数据在内存中的存储

其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储。下面是具体的概念:大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。上述概念需要记住,方便分辨大小端。

2024-10-18 22:28:20 1027

原创 C语言:内存函数

• 函数从的位置开始向后复制个字节的数据到指向的内存位置。• 这个函数在遇到的时候并不会停下来。• 如果和有任何的重叠,复制的结果都是未定义的。

2024-10-15 21:08:59 317

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

在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语言标准库中提供了一系列库函数,接下来我们就学习一下这些函数。

2024-10-13 22:05:58 710

原创 C语言:深入理解指针(5)

在学习操作符的时候,我们学习了 sizeof , sizeof 计算变量所占内存内存空间大小的,单位是字节,如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据。

2024-10-12 20:35:40 396

原创 C语言:深入理解指针(4)

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数 时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。深入理解指针 (3) 中我们写的计算机的实现的代码中,红色框中的代码是重复出现的,其中虽然执行计算的逻辑是区别的,但是输入输出操作是冗余的,有没有办法,简化一些呢?

2024-10-12 20:17:09 202

原创 C语言:深入理解指针(3)

二维数组传参,形参的部分可以写成数组,也可以写成指针形式。

2024-10-11 22:00:55 861

原创 C语言:深入理解指针(2)

⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。

2024-10-10 21:04:01 893

原创 C语言:深入讲解指针(1)

在讲内存和地址之前,我们想有个生活中的案例:有了房间号,如果你的朋友得到房间号,就可以快速的找房间,找到你。生活中,每个房间有了房间号,就能提⾼效率,能快速的找到房间。如果把上面的例子对照到计算中,又是怎么样呢?我们知道计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何高效的管理呢?其实也是把内存划分为一个个的内存单元,每个内存单元的大小取1个字节。

2024-10-08 21:52:36 1006

原创 C语言:操作符详解

/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯⼀的计算路径,那这个表达式就是存在潜在风险的,建议不要写出特别负责的表达式。

2024-08-06 20:41:56 944 1

原创 C语言:函数递归详解

递归的详细解释,与对例子深入浅出,图文结合的方式对递归加深理解,文章干货满满,相信想学习C语言的你一定会看完这篇文章.

2024-05-14 22:54:41 1189 2

原创 C语言:函数详解

了解了库函数,我们的关注度应该聚焦在自定义函数上,自定义函数其实更加重要,也能给程序员写代码更多的创造性。⼀般我们在使用函数的时候,直接将函数写出来就使用了比如:我们要写⼀个函数判断⼀年是否是闰年//判断⼀年是不是闰年//函数的定义return 1;//函数的调用if(r == 1)printf("闰年\n");elseprintf("⾮闰年\n");return 0;

2024-03-15 18:34:56 836 2

原创 C语言:数组详解

type arr_name[常量值]存放在数组中的值被称为数组的元素,数组在定义的时候可以指定数组的大小和数组中存放的元素类型• type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以自定义的类型• arr_name 指的是数组名的名字,这个名字根据实际情况去命名,尽量在学习C语言的时候就养成将命名做到见闻之义的效果,比如我在这里的命名是采取了数组(array)的缩写arr,通过连接符号来告诉读者这是数组名的意思,这对我们的后续学习有很大帮助。

2024-03-07 17:16:22 1043 1

原创 C语言:分支循环语句的详解

今天,我们先来了解一些简单的操作符。

2023-12-20 17:24:15 914 2

原创 个人的第一篇博客

个人介绍与心得

2023-11-19 17:53:27 69 2

空空如也

空空如也

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

TA关注的人

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