自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【对C++中的多态分析和总结】

文章目录多态的概念多态的概念多态,即多种形态,不同类型的对象去做同一件事,但是结果不同。(比如去商城买东西,没有会员的对象就不打折,有会员的才打折)。多态还可以分为静态的多态和动态的多态。静态的多态: 函数重载,看起来调用同一个函数有不同行为。注意: 函数模板并没有实现出多态,是模板实例化后形成的函数重载,才实现的多态。静态的多态:原理是编译时实现。举例如下://静态的多态int main(){ int a = 10; double d = 6.58; string s("hell

2022-04-18 14:48:23 1259 12

原创 【单继承和多继承的虚函数表验证】

文章目录一、单继承的虚函数表二、多继承的虚函数表一、单继承的虚函数表单继承的虚表是怎么样的呢?我们来看看下面单继承的代码再来分析class Person{public: virtual void fun1() { cout << "virtual void fun1() "<< endl; } virtual void fun2() { cout << "virtual void fun2()" << endl; }};cl

2022-04-18 14:41:34 504 1

原创 对C++中的继承分析和总结

文章目录继承的概念继承的定义继承的定义格式继承方式和访问限定符基类和派生类的赋值规则1. 派生类赋值给基类2. 基类赋值给派生类继承中的重定义 (隐藏)继承的概念继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,而继承是类设计层次的复用,所以继承的本质还是复用。举例如下:继承的定义继承的定义格式如下图所示,P

2022-04-13 15:24:56 857 7

原创 【C++中的内存管理和模板的简单理解】

文章目录内存管理内存管理我们以前学C语言的时候是怎样在堆上开辟内存的呢?我们来回顾一下:malloc 、 calloc 、 realloc,并且和C++中的动态内存管理进行对比。对于内置类型来说,我们可以有以下使用方式:int main(){ //malloc/free 和 new/delete 对应内置类型本质没有区别,只是用法上的区别 //C语言开辟空间的用法 int* p1 = (int*)malloc(sizeof(int)); int* p2 = (int*)calloc(1

2022-03-25 09:19:27 302

原创 【Linux下的Makefile 和进度条小程序以及git命名的简单使用】

文章目录一、工具Makefile的简单使用二、进度条小程序三、git三板斧的使用一、工具Makefile的简单使用项目自动构建工具Makefile好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一条命令,Makefile是一个文件,两个搭配使用,完成项目自动化构建。我们来看看下面的例子:如果我们不使用Makefile,那么在一些编译文件的时候使用的指令比较长,比如使用gcc编译器,有时候频繁改动代码,频繁编译文件,那么就要频

2022-03-21 14:49:35 1735

原创 【linux中进程相关的概念分析与总结】

文章目录计算机体系结构操作系统进程概念描述进程进程的状态进程的优先级环境变量程序地址空间计算机体系结构开局一张图,我们对下面这张图片肯定不陌生。因为计算机、笔记本、服务器,大部分都遵守冯诺依曼体系。而它们都是由硬件组成的,分为:输入设备:如键盘、磁盘、网卡、话筒等等输出设备:如显示器、磁盘、网卡、音响等等存储器(内存):内存条中央处理器(cpu):芯片注意:有了内存,cpu就不需要直接和外界打交道了,内存是体系结构的核心设备。任何设备,在数据层面,基本优先和内存打交道。cpu,在数据

2022-03-18 16:51:52 1759 20

原创 【C++中的深浅拷贝和string类中的两种写法】

文章目录深浅拷贝深浅拷贝拷贝这个词对于我们来说应该不陌生,比如我们平常的复制和粘贴就是拷贝;但是如果把拷贝这个词放到C++中来说就有一些复杂了,我们先来看一下什么是浅拷贝:下面用字符串类来模拟实现。class Astring{public: //构造函数 Astring(const char* str = "") { _str = new char[strlen(str) + 1]; strcpy(_str, str); } //采用浅拷贝写的构造函数 Astring(con

2022-03-09 12:04:08 792 1

原创 【Linux软件包管理器yum、编辑器vim和调试器gdb的简单使用】

文章目录一级目录编辑器-vim的使用vim的基本模式命令模式一级目录编辑器-vim的使用vim是一款多模式编辑器,并且vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。并且从定位上来说vim编辑器和记事本差不多。我们可以在Linux系统命令行下输入vim就会有vim的信息出现,如下图:vim的基本模式vim其实有很多种模式,下面我们先来分析下面三种模式:命令模

2022-03-04 18:06:02 1043

原创 【Linux文件的权限分析和总结】

文章目录Linux权限管理权限的修改666对于文件目录粘滞位软件的安装yumLinux权限管理我们知道Linux下有两种用户:超级用户(root)和 普通用户。它们有以下特性:超级用户: 可以再linux系统下做任何事情,不受限制。普通用户: 在linux下做有限的事情。超级用户的命令提示符是 “#”,普通用户的命令提示符是 “$“。普通用户切换成超级用户的指令: su - 或者 su (要输入root用户密码)超级用户切换成普通用户的指令: su - [用户名] (不需要输入密码)

2022-02-21 11:33:10 1754 13

原创 【Linux常用基本指令总结和分析】(持续更新)

文章目录一级目录ls指令cd指令touch指令rm指令cp指令mv指令cat指令一级目录ls指令ls -l 等价于ll ,ll就是ls -l的别名ll -d 【文件夹名称】==》表示此目录信息,不显示其它文件cd指令tree指令,能用结构的方式把文件展示出来touch指令stat指令(展示文件属性)rm指令rm -r递归删除文件夹rm -f强制删除cp指令cp -r递归处理cp -f强制处理1.拷贝文件2.拷贝目录 cp -rfmv指令1.剪切功能2.重命名功能

2022-02-18 16:53:48 1557 16

原创 C++中类和对象的分析与品鉴(下篇)

文章目录类的6个默认成员函数1、构造函数概念相关特性重点注意特性析构函数概念相关特性拷贝构造函数概念相关特性类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数,下面我们来分析分析。1、构造函数概念在我们前面学习数据结构的时候,用C语言来实现栈或队列等情况下,我们自定义的类型都要进行初始化,如果没有初始化,程序可能就会运行崩溃;所以我们要专门来写一个初始化函数。但是在C++中有没有类似于初始化函数

2022-02-15 21:27:09 122 6

原创 C++中类和对象的分析与品鉴(上篇)

文章目录一、面向过程与面向对象二、类的引入和定义struct类class类三、封装和类的访问限定符封装访问限定符四、类的作用域五、类对象模型类对象大小的计算类对象的存储方式一、面向过程与面向对象在学习类之前先来回顾一下C语言和C++的一些联系和区别:C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 在代码层面体现的是函数。C++ 是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。在代码层面体现的是类的设计和类之间的关系。总的来说,

2022-02-12 14:01:27 161 8

原创 【关于日期类的详细实现和分析】

文章目录关于日期类对象的操作:日期类的构建1.获取每个月天数的函数2.构造函数3.判断两个日期的大小关系4.日期加减天数的实现5.日期减日期的实现关于日期类对象的操作:在生活当中,关于日期我们肯定不陌生,比如各种节日都要用一个日期来定义是在哪一天;而对于日期来说我们不妨把它归为一类,在现实生活中日期是一个实体,我们把日期构建为日期类,下面我们就来实现关于日期类经常用的操作。日期类的构建我们知道描述一个日期是以哪一年、哪一月、哪一天来描述的,所以在我们自定义类型构建日期类的时候,日期类的成员就是年、月

2022-01-23 13:32:34 489

原创 【C++中有但C语言中没有的一些基础语法分析】

文章目录一、命名空间1. 命名空间定义我们知道C++语言是在C语言的基础上建立的,所以在C语言中没有的语法,C++中却可以有新的语法,这是为了弥补C语言中的一些缺陷,分析如下:一、命名空间在C语言中我们知道在同一作用域下命名是不能有相同的,比如在同一个函数中变量名字sum就只能存在一个不能存在多个。但是我就想多用这个名字怎么办呢?在C++中为我们带来了新的语法,引入了命名空间这个概念。并且在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲

2022-01-16 21:58:51 735

原创 【数据结构初阶之插入排序】:插入排序和希尔排序

文章目录插入排序直接插入排序希尔排序插入排序插入排序,是一种简单的插入排序方法,它的基本思想是:把待排序的记录按其关键值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。插入排序最简单的就是直接插入排序,而对插入排序的优化就有了希尔排序,下面我们分别来分析。直接插入排序直接插入排序在其实现过程使用双层循环,外层循环控制有序序列的最后一个下标,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。我们先分析把一个元素插入到有序数组的过程,图片如下:

2021-12-02 23:48:26 1841 2

原创 【数据结构初阶之归并排序】:归并排序的递归和非递归实现(用C语言实现,附图分析)

文章目录归并排序递归实现归并排序非递归实现归并排序归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。递归实现归并排序根据归并排序的思想我们可以采用分而治之,即用递归来解决,把问题不断分割成子问题,分割到不可分割为止。而递归实现归并排序类似于二叉树的后序遍历,我们需要

2021-12-01 23:21:37 355 6

原创 【数据结构初阶之快速排序】:快速排序的实现和优化(用C语言实现,附图详解)

文章目录一、递归实现快速排序1.左右哨兵法2.挖坑法3.前后指针法二、对快速排序的优化1.三数取中法2.减少递归的深度三、非递归实现快速排序一、递归实现快速排序快速排序简称快排,快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。根据上面的快速排序思想我们就有了三个

2021-11-29 22:39:01 941 6

原创 【数据结构初阶之二叉树】:二叉树相关的性质和经典的习题(用C语言实现,附图详解)

文章目录一、树的概念及结构1.树的概念2.树当中相关的概念3. 树的表示二、二叉树的概念及结构1.二叉树的概念2.特殊的二叉树3.二叉树的性质4.二叉树的存储结构三、二叉树链式结构的实现1.二叉树的创建2.二叉树的前序遍历3.二叉树的中序遍历4.二叉树的后序遍历一、树的概念及结构1.树的概念在数据结构中什么是树呢?我们有如下定义和性质:定义: 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝.

2021-11-22 19:49:01 1553 7

原创 【数据结构初阶】:堆的接口实现和堆排序

文章目录堆的实现一、堆的概念及结构二、堆的实现思路三、堆的各种接口:1.堆的初始化和销毁2.堆的插入3.堆的删除4.打印堆的数据和获取堆顶的元素5.获取堆的元素个数和判空堆排序1.向上调整建堆2.向下调整建堆3.建堆后的堆排序4.建堆的时间复杂度证明堆的实现一、堆的概念及结构堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。(kik_{i}ki​ <= k2i

2021-11-15 19:55:16 779 2

原创 【LeetCode之栈和队列】:关于栈和队列经典的OJ题(用C语言实现,附图详解)

LeetCode题目1、括号匹配问题2、用队列实现栈3、用栈实现队列4、设计循环队列1、括号匹配问题LeetCode链接: 【20. 有效的括号】这道题就是经典的利用栈解决问题的例子;思路如下:遍历一遍字符串,如果遇倒左括号就入栈,如果遇倒右括号取栈顶的元素进行匹配并出栈顶的元素,如果相匹配就继续,不匹配就返回false。但是要注意这样只能检验出左右括号相等的情况下才可以,如果左右括号不相等呢?如果左括号多于右括号,并且遍历结束后它们都是匹配的,这种情况并不是完全匹配的,因为栈里还有元素剩余

2021-11-04 22:37:53 609 4

原创 【数据结构初阶】:栈和队列的实现(用C语言实现,附图详解和附源码)

文章目录栈的实现:一、栈的概念和性质二、栈的实现思路三、栈的相关变量内存布局图四、栈的初始化和销毁五、栈的接口实现:1.入栈2.出栈3.获取栈顶的数据4.获取栈的元素个数5.判断栈是否为空队列的实现:一、队列的概念和性质二、队列的实现思路三、队列相关变量的内存布局图四、队列的初始化和销毁五、队列的接口实现:1. 入数据2.出数据3.取队头数据4.取队尾数据5.获取队列元素个数6.判断队列是否为空总结栈的实现:一、栈的概念和性质栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在固定的一端进行插

2021-11-01 23:29:00 1204 6

原创 【LeetCode之链表】:经典的快慢指针相关问题

LeetCode题目1. 返回链表的中间结点2. 输出该链表中倒数第k个结点3. 链表的回文结构1. 返回链表的中间结点LeetCode链接: 【链表的中间结点】思路1: 最容易想到的思路是先统计整个链表的结点个数,然后就可以得出中间结点的位置是在第几个,最后再从头结点走到中间结点位置即可。代码实现如下:struct ListNode* middleNode(struct ListNode* head){ int count=0; struct ListNode* cur=hea

2021-10-31 11:44:19 233 1

原创 【LeetCode之链表】:移除链表元素 和 反转链表(用C语言实现,附图详解)

LeetCode题目1.移除链表元素2.反转链表1.移除链表元素LeetCode链接: 【203. 移除链表元素】这个题目和单链表的增删查改接口很相似,要我们删除链表中的元素。要注意题目给我们的是无头单向不循环链表,是没有哨兵位结点的,所以删除的元素有两种情况:1.可能在链表的头结点2.可能在链表的其它结点位置而头结点的删除和在其它结点删除是不一样的,头结点删除就让下一个结点当头结点就可以了;其它结点删除要找到前一个结点和后一个结点,然后把前结点和后结点链接起来就可以了。所以针对以上分析

2021-10-30 20:38:07 262 2

原创 【LeetCode之顺序表】:三道经典的顺序表OJ题(用C语言实现,附图详解)

文章目录1. 原地移除数组中所有的元素val2. 删除排序数组中的重复项3. 合并两个有序数组1. 原地移除数组中所有的元素valLeetCode链接:27. 移除元素2. 删除排序数组中的重复项3. 合并两个有序数组...

2021-10-29 22:54:05 452 12

原创 【数据结构初阶】:带头双向循环链表(用C语言实现,附图详解)

文章目录一、带头双向循环链表二、带头双向循环链表实现思路三、链表指针和结点内存布局图四、带头双向循环链表的初始化五、带头双向循环链表接口实现:1.尾部插入数据2.头部插入数据3.尾部删除数据4.头部删除数据5.显示数据6.查找数据7.在结点前面插入数据8.删除当前位置数据9.内存释放六、对头插 尾插 头删 尾删的改造七、总结(附源码)一、带头双向循环链表前面我们实现了无头单向非循环链表,特性为:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构

2021-10-27 23:49:20 1553 8

原创 【数据结构初阶】:无头单向不循环链表(用C语言实现,附图详解)

文章目录一、链表的概念二、链表的分类三、无头单向不循环链表的实现思路四、无头单向不循环链表内存布局图五、无头单向不循环链表接口实现:1.尾部插入数据2.头部插入数据3.尾部删除数据4.头部删除数据5.显示数据6.查找数据7.在结点前面插入数据8.在结点后面插入数据9.删除当前位置数据10.删除当前位置后一个数据11.内存释放六、内容总结(附源码)一、链表的概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点

2021-10-24 13:45:11 481 14

原创 【数据结构初阶】:动态顺序表的功能实现(用C语言实现,附图分析)

文章目录一、动态版本顺序表二、动态顺序表的实现思路三、动态顺序表内存布局图四、初始化顺序表和内存释放五、顺序表接口实现:1.尾部插入数据2.头部插入数据3.尾部删除数据4.头部删除数据5.显示数据6.查找数据7.在某个位置插入数据8.在某个位置删除数据六、对头插 尾插 头删 尾删 的改造七、总结一、动态版本顺序表在实现顺序表之前,我们要知道顺序表按照能不能扩容可以分为两种版本,静态版本和动态版本。静态版本就是把内容存到数组中,一旦数组在内存栈上开辟了,当数据存满的时候就不能再继续存储了。所以针对这个.

2021-10-16 16:08:21 1150 11

原创 谈谈算法中的时间复杂度和空间复杂度

文章目录算法的复杂度时间复杂度时间复杂度的概念大O的渐进表示法空间复杂度常见复杂度的计算例题常见函数1常见函数2常见用例3冒泡排序的复杂度算法的复杂度我们写代码要实现某种功能的时候,可以使用很多方法来解决,但是哪一种方法才是最好的呢?又怎么来衡量?所以就要引出算法复杂度的概念了。算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法

2021-10-13 16:19:05 593 8

原创 atoi函数模拟实现和解决单身狗问题(C语言实现)

这里写目录标题atoi函数模拟实现单身狗问题方法1:暴力解决方法2:排序解决方法3:异或解决atoi函数这是个非常有趣的函数,它的功能是把字符串中的数字转化为一个整数。但是其中的坑是有不少的,我们往下面分析分析。先来使用体会体会:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ char arr[] = " -123 45+ "; char .

2021-10-07 22:20:48 823 7

原创 用C语言来实现通讯录(顺序表结构)

文章目录通讯录1.菜单与主框架2.定义信息结构体3.增加联系人二级目录三级目录通讯录通讯录对于我们来说都不陌生,在我们早些年使用老人机的时候就认识到了,随着智能手机的普及通讯录变得花里胡哨和更加好看了。但是功能还是不变的,通讯录能够保存人的信息,比如名字、年龄、性别、电话、住址。那么今天让我们来模拟实现通讯录的一些功能吧。1.菜单与主框架我们首先要搞个菜单模块,把我们想要实现的功能打印出来让我们看到,然后我们再去做选择。框架: 我们定义三个文件,一个是头文件 Contact.h ,一个是Cont

2021-10-05 15:50:42 4523 19

原创 C语言实现冒泡排序的三种优化和qsort函数的解析与模拟实现

这里写目录标题冒泡排序普通版本对外层循环进行优化对内循环进行优化双向冒泡排序qsort函数分析与使用三级目录冒泡排序当我们第一次提起冒泡排序的时候,我们总是要问什么是冒泡排序呢?简单的说,就是重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。而这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡

2021-10-03 11:50:31 729 5

原创 C语言中的文件操作

文件目录什么是文件文件指针文件的打开和关闭fopen函数fclose函数文件的顺序读写字符输出函数 fputc字符输入函数 fgetc文本行输出函数 fputs文本行输入函数 fgets二级目录三级目录什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运

2021-09-30 11:56:42 9231 12

原创 C语言中的动态内存管理

文章目录为什么存在动态内存分配动态内存函数的介绍malloc和free常见的动态内存错误几个经典的例题柔性数组二级目录三级目录为什么存在动态内存分配我们常见的开辟方式有:int val = 20; //在栈空间上开辟四个字节char arr[10] = {0}; //在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空

2021-09-28 22:58:37 144 3

原创 C语言内存操作函数解析和模拟实现

文章目录内存操作函数memsetmemcpymemmovememcmp内存操作函数memsetC 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的空间的前 n 个字节。头文件<string.h>声明void *memset(void *str, int c, size_t n)参数1str – 指向要填充的内存块参数2c – 要被设置的值。该值以 int.

2021-09-23 14:25:28 234 4

原创 C语言中字符串函数的浅谈与造轮子

文章目录字符串函数分析与造轮子求字符串长度函数:strlen长度不受限制的字符串函数:strcpystrcatstrcmp长度受限制的字符串函数:strncpystrncatstrncmp字符串查找函数:strstrstrtok字符串函数分析与造轮子C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中 或者字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数。下面我们来认识库中的一些字符串函数并且模拟实现。求字符串长度函数:strlenC .

2021-09-21 21:49:38 382 3

原创 C语言自定义类型 结构体、位段、枚举、联合体的分析

文章目录结构体结构体类型的声明结构体变量的定义和初始化结构体内存对齐位段什么是位段位段的内存分配位段的跨平台问题枚举枚举类型的定义枚举的优点联合体(共用体)联合类型的定义联合的特点联合大小的计算结构体结构体类型的声明说起结构体,那什么是结构体呢?结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。总的来说就是不同类型的集合构成了结构体,而相同类型的集合构成了数组。这也是结构体与数组的区别。比如要描述一位学生的身份,我们可以有以下声明:struct student{.

2021-09-20 21:13:59 285 7

原创 浅谈C语言将字符串中的空格替换成%20的几种方法(附图超级详细解答)

文章目录题目分析暴力位移法巧用数组法高效倒放法题目分析将字符串中的空格替换为%20。样例: “abc defgx yz” 转换成 “abc%20defgx%20yz”。当我们第一次看到题目时,肯定会想,一个空格怎么能放3个字符进去呢?那有什么办法呢,接下来让我们一步步地分析分析。暴力位移法首先最让人想到的方法肯定是 把空格后的字符往后面移动两位,然后再放字符“%20”,但是种方法只能从后往前挪,如果从前往后挪,会把字符给覆盖掉。所以我们设两个指针,一个负责找空格,一个负责挪动空格后面的字符。

2021-08-17 21:06:53 3793 7

原创 C语言中表达式求值和整形提升的那些坑那些事

文章目录数据在内存中的范围二级目录三级目录数据在内存中的范围我们知道数据有很多种类型,阔以看看我这篇文章 数据在内存中的存储 里面详细介绍了各种类型的数据。下面都是在32位平台下分析的。我们先以char类型为例子,char类型占一个字节,看看它的范围是多少,图片如下:因此我们可以推导出其他类型的范围:类型存储空间大小数据范围char1个字节-128 ~ 127char第二列文本居右第三列文本居左char第二列文本居右第三列文本居左char第

2021-08-15 14:18:31 504 5

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

这里写目录标题数据类型介绍二级目录三级目录数据类型介绍数据类型的基本分类:整形家族:charunsigned charsigned charshortunsigned short [int]signed short [int]intunsigned intsigned intlongunsigned long [int]signed long [int]二级目录三级目录...

2021-08-14 12:26:45 860 4

原创 C语言深层次的修炼——函数栈帧的创建与销毁

目录栈帧是什么大概轮廓函数创建过程函数销毁过程栈帧是什么不知大家接触过 “栈帧” 这个词没有,我第一次听以为是函数战争,心里怎么想也想不明白,战争(栈帧)是什么鬼????然后我理解后才明白 栈(Stack)简单说, 是由于函数运行而临时占用的内存区域。而帧是函数开辟的会为它在栈上建立一个帧(frame)我们了解后,那栈帧有什么用呢?其实我们在学习C语言的时候会用很多的疑问,比如:1.main函数肯定是要被调用的,那是被谁调用的呢?2.函数里面的局部变量是怎么创建的?3.局部变量又为什么是默.

2021-08-08 19:24:52 426 4

空空如也

空空如也

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

TA关注的人

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