自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (5)
  • 收藏
  • 关注

原创 POE(Power Over Ethernet,以太网供电)

POE(Power Over Ethernet,以太网供电) 现有的以太网Cat.5布线基础架构下,为一些基于IP的终端传输数据信号同时,提供直流供电的技术。利用现存标准以太网传输电缆的同时传送数据和电功率的最新标准规范,并保持现存以太网系统和用户的兼容性。POE系统组成:供电端设备(PSE)和受电端设备(PD)。PSE:为以太网客户端设备供电的设备,也是整个POE以太网供电过程的管理者。PD:接受供电的PSE负载,即POE系统的客户端设备。IEEE 802.3af(15.4W)标准:...

2022-01-10 15:37:45 898

原创 (数据结构)图——图、顶点、无向边、无向图、有向边、有向图、简单图、无向完全图、有向完全图、稀疏图、稠密图、权、网、子图的相关概念

图的定义:图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E)。其中:G表示一个图,V是图G中顶点的集合,E是图G中边的集合。注意:1、线性表中我们把数据元素称为元素;树中将数据元素称为结点;在图中数据元素称为顶点。2、线性表中可以没有数据元素,称为空表;树中可以没有结点,称为空树;在图中不允许没有顶点。在定义中,若V是顶点的集合,则强调了顶点集合V有穷非空。3、线性表中,相邻的数据元素之间具有线性关系;树结构中,相邻两层的结点具有层次关系;在图中,任意两个顶点之间都有可能有关

2021-09-07 16:27:06 12476 3

原创 (数据结构)树转换为二叉树、森林转换为二叉树、二叉树转换为树、二叉树转换为森林及树与森林的遍历

1、树转换为二叉树(1)加线。在所有兄弟结点之间加一条线。(2)去线。对树中每个结点,只保留它与第一个孩子结点的连线,删除它与其他孩子结点之间的连线。(3)层次调整。以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明。注意第一个孩子是二叉树结点的左孩子,兄弟转换过来的孩子是结点的右孩子。注意:层次调整时很容易弄错左右孩子的关系,第一个孩子是二叉树结点的左孩子,兄弟转换过来的孩子是结点的右孩子。2、森林转换为二叉树(1)把每棵树转换为二叉树。(2)第一棵二叉树不动,从第二棵二

2021-09-07 12:07:24 1281

原创 (数据结构)线索二叉树——线索二叉树概念、线索二叉树结点结构、创建线索二叉树程序、遍历线索二叉树算法

线索二叉树:将指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。其实线索二叉树相当于把一棵二叉树变成一个双向链表,这有利于方便插入删除结点和查找某个结点的操作。线索化:对二叉树以某种次序遍历使其变为线索二叉树的过程。线索二叉树的结点结构:lchild - ltag - data - rtag - rchild其中:1、ltag为0使指向该结点的左孩子,为1时指向该结点的前驱。2、rtag为0使指向该结点的右孩子,为1时指向该结点的后继。3、在每个结点

2021-08-30 13:38:32 944

原创 (数据结构)二叉树的生成——扩展二叉树的概念及用递归算法生成二叉树

将二叉树中每个结点的空指针引出一个虚结点,其值为一特定值(#),这种处理后的二叉树为原二叉树的扩展二叉树。前序遍历序列为:AB#D##C##,生成一棵二叉树,实现算法如下:void CreateBiTree(BiTree *T){ TElemType ch; scanf("%c", &ch); if (ch == '#') *T = NULL; else { *T = (BiTree) malloc (sizeof(BiTNode)); if (!*T)

2021-08-30 12:24:16 413

原创 (数据结构)二叉树的遍历——前序遍历、中序遍历、后序遍历、层序遍历 及 前中后序遍历的算法

二叉树的遍历:指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅访问一次。二叉树的遍历方法:1、前序遍历若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。(根——左——右)2、中序遍历若二叉树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。(左——根——右)3、后序遍历若二叉树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后是访问根结

2021-08-26 16:18:31 616

原创 (数据结构)二叉树——满二叉树、完全二叉树、概念、特点、二叉树的性质、二叉树的顺序存储结构及二叉链表

二叉树的定义二叉树:n(n≥0)个结点的有限集合,该集合或者为空集(又称空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点1、每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。注意不是只有两棵子树,没有子树或者有一棵子树都是可以的。2、左子树和右子树是有顺序的,次序不能任意颠倒。3、即使树中某结点只有一棵子树,也要区分它是左子树和右子树。二叉树具有五种基本形态:1、空二叉树。2、只有一个根结点。3、根结点只有左子树。4、根结点

2021-08-26 11:49:31 3022

原创 (数据结构)树——概念、常规操作指令、存储方式及双亲表示法、孩子表示法和孩子兄弟表示法

树:n(n≥0)个结点的有限集,是一种一对多的数据结构。当n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、......、Tm,其中每一个集合本身又是一棵树,并且称为根的子树。树的定义还需要强调两点:(1)n>0时根结点是唯一的,不可能存在多个根结点,数据结构的树只能有一个根结点。(2)m>0时,子树的个数没有限制,但它们一定是互不相交的。结点分类1、树的结点包

2021-08-26 10:07:29 887

原创 (数据结构)串——概念、常规操作指令、串的顺序存储结构、串的链式存储结构

串:由零个或多个字符组成的有限系列,又名叫字符串。例如:s = "a1a2a3...an"(n>=0),其中s是串的名称,用双引号(或者单引号)括起来的字符序列部分是串的值。其中引号部分不属于串的内容,双引号里面可以是字母、数字或其他字符,其中ai的i就是字符在串的第n个位置,串中的字符数目n称为串的长度。空串:零个字符的串,长度为0,可直接用""""(两双引号)表示。注意:串的相邻字符之间具有前驱和后继的关系。1、空格串:只包含空格的串。2、空格串与空串的区别:空格串是有内容有长

2021-08-19 10:30:11 873

原创 (数据结构)队列——概念、循环队列、链队列、队列的常规操作及循环队列和链队列的入队、出队代码例子

队列:只允许在一端进行插入操作,在另一端进行产出操作的线性表。队列是一种先进先出的线性表(简称FIFO)。其中允许插入操作的一端称为队尾,允许删除操作的一端称为队头。例如队列a=(a1,a2,a3,...,an),其中a1是队头元素,an是队尾元素。这就像我们排队买奶茶一样,队头第一位买完就优先出列,后面先买奶茶的话,你就得排在队列的最后,所以删除时,我们总是从a1开始,插入时,在队尾插入。队列的应用:键盘进行各种字母或数字的输入、记事本软件上的输出等。队列的常规操作指令:InitQueue

2021-08-18 18:36:59 1362

原创 (C/C++)递归——斐波那契数列(用C/C++编写迭代和递归函数代码)

之前我们讲过递归的定义,今天学习一下运用到递归的斐波那契数列。递归的定义:在定义一个过程或函数时,出现直接或间接调用自己的成分,称之为递归。递归函数:一个直接调用自己或者通过一系列的调用语句间接地调用自己的函数。每个递归定义必须至少有一个条件,满足时递归不在进行,即不再引用自身而是返回值退出。斐波那契数列就是解决兔子繁殖计算的问题,问题如下:兔子从出生两个月后就有繁殖能力,一对兔子每个月可以生出一对兔子。加入兔子不死,一年后有繁殖多少对兔子?思路:新出生的兔子为例,第一个月——1对,

2021-08-15 16:01:20 2093

原创 (数据结构)栈的链式存储结构(链栈)的进栈操作和出栈操作——程序例子

既然有栈的顺序存储结构,那么也存在有栈的链式存储结构。栈的顺序存储结构称为顺序栈。栈的链式存储结构称为链栈。因为单链表有头指针,而栈顶指针也是必须的,所以我们可以把栈顶放在单链表的头部,此时链表有了栈顶在头部,这样单链表的头结点已经没有作用了,所以通常对链栈来说是不需要头结点的。顺序栈容易出现栈满的情况,而对链栈来说是基本不可能出现栈满的情况的,除非使用的内存空间已经用完了,这样的话你的电脑已经99%处于死机的状态了。链表的空栈:链表的头指针指向空。链栈的进栈操作:Status

2021-08-15 14:57:31 2619

原创 (数据结构)两栈共享空间——程序实现例子

栈的顺序存储结构只准栈顶输入元素,因此不存在线性表的插入建和删除时需要移动元素的问题。但是这样会导致内存不够用的问题,顺序栈必须事先确定数组存储空间大小,如果存储空间满了,就需要程序员进行编程操作扩展数组的容量。这也太麻烦了,一个不行,我用两个!找两个相同类型的栈,同时在两个栈里各自开辟数组空间,漂亮!但是没想到:第一个已经满了,再存储元素的话就会溢出,另一个栈存储空间还很多。这不是浪费吗?我们可以反过来想:用一个数组存储两个栈。这样不就解决了嘛。数组有两个端点,两个栈就有两个栈顶,我们可以让一

2021-08-15 14:15:31 420

原创 (数据结构)顺序栈——概念、进栈操作及出栈操作(程序例子)

我们了解一下,栈其实也是一个线性表,栈元素是具有线性关系,即前驱后继关系,它只是一种特殊的线性表。既然栈是线性表的特例,我们知道线性表是有顺序存储结构的,那么栈也是可以顺序存储的,栈的顺序存储是线性表顺序存储的简化,其中栈的顺序存储简称为顺序栈。...

2021-08-14 13:34:19 4045

原创 (数据结构)栈(LIFO结构)——概念、进栈、出栈、先进后出的特性

什么叫做栈?举个简单的例子:给手枪装子弹,最先进去的子弹在弹夹的最后一个位置,最后的一个子弹在弹夹的首位,这就是栈最好理解的例子了。栈运用的软件例子:word文档的撤销键、浏览器的后退键,美图秀秀p图的撤销键等栈的定义:栈是限定仅在表尾进行插入和删除操作的线性表。我们将允许插入的删除的一端叫做栈顶,另外一端叫做栈底,栈是一种后进先出的数据结构,所以称为后进先出的线性表,简称LIFO结构。空栈:不含任何数据元素的栈。注意:1、栈是一个线性表,栈里面的元素具有线性关系,也就是我们前面说

2021-08-13 14:33:56 2817

原创 (数据结构)循环链表和双向链表——概念及插入删除的程序例子

循环链表:将单链表的终端结点的指针端由空指针改为指向头结点,这样就会把整个单链表形成一个环,这种头尾相连的单链表也称单循环链表。单链表与循环链表的差异:原来判断怕p->next是否为空,现在改为p->next不等于头结点,则循环继续。我们也可以把两个循环链表合并成一个表,只要操作两个循环链表的尾指针就行了。现在是A循环链表:头结点是rearA->next 尾指针是rearAB循环链表:头结点rearB->next,头结点的下一个结点是rearB->next-..

2021-08-13 11:48:22 263

原创 (数据结构)静态链表——概念、插入与删除(程序)、优缺点

静态链表:用数组描述的链表。数组的元素是由data和cur两个数据域组成的,其中:1、数据域data是用来存放数据元素的。2、数据域cur相当于链式存储结构的next指针,用来存放该元素的后继在数组中的下标,通常把cur称为游标。我们在创建静态链表时,为了随时可以插入数据,会建立一个较大的数组,防止内存过小导致溢出。在创建数组时,我们对数组第一个元素和最后一个元素不做存放数据的处理。数组逻辑上分为两个链表:备用链表(空闲的节点)和数据链表(已被使用的节点)。备用链表:未被使用的数组元素。

2021-08-13 10:52:57 631

原创 (数据结构)线性表(总结)——链式存储结构与顺序储存结构的优缺点

我们从存储分配方式、时间性能和空间性能三个方面进行对比。1、储存分配方式顺序存储结构是一段连续的存储单元,依次存储线性表的数据元素。链式存储结构是一组任意的存储单元,存放线性表的元素。2、时间性能a、查找顺序存储结构:0(1)链式存储结构:0(n)b、插入和删除顺序存储结构的插入和删除需要平均线性表的长度一半的元素,时间是0(n)。链式存储结构的插入和删除是在找出某个位置的指针后,插入和删除时间是0(1)。3、空间性能顺序存储结构需要预先分配出存储空间,这块存储空间是大小是规定的,

2021-08-13 09:38:58 9932 1

原创 (数据结构)单链表的创建和删除——算法思路+程序例子

知识回顾:顺序存储结构的创建,就是一个数组的初始化,相当于声明一个类型和大小的数组并赋值的过程。顺序存储结构是集中的,链式存储结构是分散的,它是一个动态结构。对于链表来说,它占用的空间大小和位置是不需要预先分配划定的,可按照实际需求即时生成。一、单链表整表创建的算法思路:1、声明一个指针p和变量i;2、初始化一个空链表L;3、让L的头结点的指针指向NULL,即创建一个带头结点的单链表;4、循环结构:a、生成一个新结点赋值给p;b、随机生成一个数字赋值给p的数据域p->data;c

2021-08-12 16:36:25 1131

原创 (数据结构)链表的读取、插入及删除——算法思路+程序例子

一、获取链表的第i个数据的算法思路:1、声明一个指针p指向链表的第一个结点,初始化j从1开始;2、当j < i 时,遍历链表,让指针p向后移动,不断指向下一个结点,++j;3、若到链表末尾p为空时,则说明第i个结点不存在;4、若3不成立,则说明查找成功,返回结点p的数据;算法程序例子:Status GetElem(LinkList L, int i, ElemType *e){ int j ; LinkList p; //声明指针p p = L->next; //p指针指

2021-08-12 15:16:11 1830

原创 (数据结构)线性表三——链式存储结构(链表)

知识补充:顺序储存结构:也称为顺序表。顺序表在存储数据时,会提前找到一块足够存放这些数据的内存空间,然后将数据一个一个的存储进去。链式存储结构:称为链表,也称为单链表。链表与顺序表不同,它可以把数据存储到不同的位置,不像顺序表只存放在一个位置上。链式存储结构的特点:用一组任意的存储单元存储线性表的数据元素,其中这组存储单元可以是连续的,也可以是不连续的,所以这些数据元素可以存在内存未被占用的任意位置。顺序存储结构与链式存储结构的区别:1、顺序存储结构中,每个数据元素在存储的时候只需要存储数据元素

2021-08-12 14:07:52 1262

原创 (C++)this指针——例子讲解及运用

我们平常使用类时,每个类成员函数都只涉及一个对象,就是调用类的对象。但是涉及两个对象呢?此时就用到this指针。举个例子说,现在定义一个成员函数,它要查看两个类对象并且返回值较高的那个对象的引用。(我们定义类为Stock)如何将两个要比较的对象提供成员函数?现成员函数命名为topval(),函数调用stock1.topval()将访问stock1对象的数据,同理stock2.topval()将访问stock2对象的数据。如果进行两个对象进行比较,则必须将第二个对象作为参数传递给它,如果效率高的话

2021-08-12 11:28:43 428

原创 (C++)构造函数、默认构造函数及析构函数的小结

一、构造函数1、构造函数是一种特殊的类成员函数,在创建类的时候被调用。简单地说,就是什么时候用类创建对象,构造函数将自动被调用。2、构造函数的名称和类名是相同的,但是可以通过函数重载,可以创建多个同名的构造函数,其条件是每个函数的特征标,即参数列表,都要不同。3、构造函数没有声明类型。4、构造函数用于初始化类对象的成员,初始化应与构造函数的参数列表匹配。简单举个例子:Tim类的构造函数原型Tim (const char * name1, const char * name2);初始

2021-08-12 10:14:44 509

原创 (C++)析构函数——概念、通用格式及const成员函数

用构造函数创建对象之后,程序负责跟踪该对象,直到其过期为止。对象过期时,程序将自动调用一个特殊成员函数——析构函数。其中析构函数是完成清理工作的。eg:如果构造函数使用new来分配内存,则析构函数将使用delete来释放这些内存。析构函数的名称:在类名前面加上~(取反运算符)。eg:Stock类的析构函数为~Stock()。此外,和构造函数一样,析构函数也可以没有返回值和声明类型。但是与构造函数不同的是,析构函数没有参数,因此Stock的析构函数的原型必须是:~Stock();通用模

2021-08-12 09:32:39 416

原创 (C++)类的构造函数——显示、隐式的调用构造函数及默认构造函数的显示、隐式方式

对于类,我们知道数据部分的访问状态是私有的,这将意味着程序不能直接访问数据成员,程序只能通过成员函数来访问数据成员。所以我们要设计合适的成员函数才能成功地将对象初始化,如果使数据成员成为公有,而不是私有,这使数据成为公有的违背了类将数据隐藏的一个特性。其中,类构造函数专门用于构造新对象、将值赋给它们的数据成员。构造函数的原型和函数头有一个有趣的特性——虽然没有返回值,但没有被声明为void型,实际上,构造函数没有声明类型。构造函数的方法:(举个例子)原函数:void Stock::acqui

2021-08-11 11:47:00 3601

原创 (数据结构)线性表(三)——顺序存储结构的插入和删除(程序例子+算法思路)

获得元素的操作代码:#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;Status GetElem(SqList L, int i, ElemType *e){ if(L.length == 0 || i < 1 || i > L.length) return ERROR; *=L.data[i - 1]; return OK;}插入算法的思路:1、如果插入位置不.

2021-08-07 16:20:30 1312

原创 (数据结构)线性表(二)——顺序存储结构

线性表的顺序存储结构——在一段地址连续的存储单元依次存储线性表的数据元素。举个简单的例子:在内存中寻找一块空地,依次有顺序地把一定内存空间进行占位,然后把相同数据类型的数据元素依次存放在这块空地里。其中一维数据可以实现顺序储存结构,例如:把第一个数据元素存到数组下标为0的位置中,然后将线性表的相邻元素依次存储进去数组相邻的位置。内存的第一个位置存放存储空间的起始位置,相当于数组的第一个元素位置存放的是数组的地址,其数组的长度就是这个最大存储容量。其中顺序存储结构需要三个属性:1、存储空间

2021-08-07 15:24:47 399

原创 (数据结构)线性表(一)——概念及常规操作指令

线性表(List):零个或多个数据元素的有限序列。线性表是一个序列,元素之间是有顺序的,线性表强调是有限的,元素个数自然也是有限的,而我们计算机处理对象都是有限的,那些无限的数列只是一个概念。现在有一个线性表,{a(1),...., a(i-1), a(i), a(i+1),...., a(n)},我们来看一下,表中的a(i-1)是在a(i)的前面,领先于a(i),同理a(i)领先于a(i+1),所以将a(i-1)是a(i)的直接前驱元素,a(i+1)是a(i)的直接后继元素。当i=1,2,3,

2021-08-07 14:29:13 165

原创 (C++)类声明、类定义、类使用——小结

指定类设计的第一步是提供类的声明。(类声明)类声明类似结构声明,可以包括数据成员和函数成员。其中声明有私有部分,在其中声明的成员只能通过成员函数进行访问;其中声明也有共有部分,在其中声明的成员可以被使用类对象的程序直接访问。通常,数据成员被放在私有部分中,成员函数被放在公有部分中。通用格式:class className{private: data member declarationspublic: member function prototypes};公有部分...

2021-08-06 14:14:44 1256

原创 (C++)类的定义(实现类成员函数)——详细讲解,举例子

前面讲解了类的声明,现在我们讲解一下类的定义。类的定义说简单点就是实现类成员函数,而成员函数定义与常规的函数定义非常相似,也需要有函数头和函数体,也可以有返回类型和参数。有两个特殊的特征:1、定义成员函数时,使用作用域解析运算符(::)来标识函数所属的类;2、类方法可以访问类的private组件。我们先来看成员函数的函数头使用作用域运算符解析(::)来指定函数所属的类。eg:void Stock::update(double price) 意思是定义了update()函数是Sto...

2021-08-06 10:55:29 2733 1

原创 (C++)类的概念及类的声明——(详细讲解,详细地举例子)

我们知道C++是面向对象(OOP)的。而OOP最重要的特性无疑是五点:1、抽象;2、封装和数据隐藏;3、多态;4、继承;5、代码的可重用性。首先来了解一下类,类是什么?类:是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。我们可以理解为一个数据类型,这个数据类型是复合的,它既有数据又有函数。一句话就是:既有数据又有函数的复合数据类型。类规范有两部分组成:1、类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口。2、类方法定

2021-08-05 23:12:55 2966

原创 (C++)命名空间与using声明和using编译——概念

先来复习一下名称空间的属性。1、声明区域:可以在其中进行声明的区域。eg:在函数外面声明全局变量,对于这种变量,其声明区域为其声明的所在的文件。2、潜在作用区域:从声明点开始,至其声明区域的结尾。3、作用域:变量对程序而言的可见的范围。名称空间:一个名称空间中的名称不会与另一个名称空间中的相同名称发生冲突,同时允许程序的其他部分使用该名称空间中声明的东西。举个通俗的例子:一班有个叫张三,二班也有个叫张三,这是一班张三和二班张三是不冲突的,因此一班、二班就是命名空间。名称空间可以是

2021-08-04 15:59:51 393

原创 (C++)new运算符进行分配内存、new()定位运算符、delete运算符进行释放内存——动态分配(程序例子)

动态内存由运算符new和delete控制,不是由作用域和链接性规则控制。用new运算符初始化1、如果要为内置的标量类型(int、double等)分配存储空间并初始化,可在类型名后面加上初始值,并将用括号()括起来。eg:int *pt = new int (5);double *pt = new double (100);2、如果要初始化常规结构或者数组,需要使用大括号{}的列表初始化。eg:strcut tim{ int x; int y; double z;...

2021-08-01 15:12:30 1464

原创 (C++)extern “C” 和 extern “C++”——语言链接性

extern "C" 和 extern "C++" 的区别,首先我们先认识一个概念——语言的链接性。C语言链接性:在C语言中,一个名称只对应一个函数,因此中很容易实现。为满足内部需要,C语言编译器可能将spiff这同样的函数名翻译为_spiff。C++语言链接性:在C++中,同一个名称可能对应多个函数,必须将这些函数翻译为不同的符号名称。因此C++编译器执行名称矫正或名称修饰,为重载函数生成不同的符号名称。eg:spiff(int)转换为_spiff_ispiff(double, double)

2021-08-01 10:20:05 240

原创 (C++)static和extern用于函数与其函数的链接性

和变量一样,函数也有链接性。C++ 不允许在一个函数中定义另外一个函数,因此所有的函数的存储持续性都自动为静态的,即在整个程序执行期间都一直存在。在默认情况下,函数的链接性为外部的,即可以在文件间共享。实际上,可以在函数原型中使用关键字extern来指出函数是另外一个文件中定义的。还可以使用关键字static将函数的链接性设置为内部的,使之只能在一个文件中使用。必须同时在原型和函数定义中使用该关键字:static int private(double x);.....static

2021-08-01 10:00:03 437

原创 (C++)用const将一组变量放在头文件

const限定符对默认存储类型稍有影响的。在默认的情况下全局变量的链接性为外部的,但const全局变量的链接性为内部的,即只在当前文件可见。举个简单的例子:在1.cpp头文件中创建 int a = 10;在2.cpp头文件中创建 int a = 10;很明显这种方法是不可行的,运行会报错,提示重名。但是在前面加上const就不会这样:在1.cpp头文件中创建 const int a = 10;在2.cpp头文件中创建 const int a = 10;这两个是相对独立可见的,互...

2021-08-01 09:48:50 536

原创 (C++)static在用于代码块时的静态存储持续性

将static限定符用于在代码块中定义的变量——在代码块中使用staitc时,将导致局部变量的内存持续性为静态的。这意味着该变量只在该代码块中可用,但它在该代码块不处于活动状态时仍然存在。因此在两次函数调用之间,静态局部变量的值将保持不变。另外,如果初始化了静态局部变量,则程序只在启动时进行一次初始化。以后再调用函数时,将不会像自动变量那样再次被初始化。举例子说会清楚点:#include <iostream>using namespace std;const int ArS

2021-07-31 13:50:14 619

原创 (C++)static限定符的内部链接性及静态持续性

将static限定符用于作用域为整个文件的变量时,该变量的链接性将为内部的。在多文件程序中,内部链接性和外部链接性之间的差别很有意义。链接性为内部的变量:只能在其所属的文件中使用。链接性为外部的变量:可以在其他文件中使用,常规外部变量都具有外部链接性。举个简单的例子:在xxx.c或者xxx.cpp文件中定义一个全局变量,全局变量加上static时,这个全局变量只能在当前文件中可见。错误例子:在其他文件中使用相同的名称来表示其他变量。//file1int errors = 20;...

2021-07-31 11:18:17 361

原创 (C++)extern定义外部变量和与全局变量同名的局部变量的访问输出全局变量值

如果要在多个文件中使用外部变量,只需在一个文件中包含该变量的定义,但在使用变量的其他所有文件中,都必须使用关键字extern声明它。eg:(在头文件中声明)#ifndef_BASIC_STDY_H_#define_BASIC_STDY_H_extern int a; //在头文件中声明,必须加上extern,否则就是重定义#endif模板:extern 数据类型 变量名;在定义与全局变量同名的局部变量后,局部变量将隐藏全局变量。现想...

2021-07-31 09:49:17 739

原创 (C++)存储持续性、作用域、链接性(简单易懂)

存储持续性C++使用三种不同的方案来存储数据(区别:数据保留在内存中的时间)1、自动存储持续性:在函数定义中声明的变量(包括函数参数)的存储持续性为自动的。它们在程序开始执行其所属的函数或者代码块时被创建,在执行完函数或代码块时,它们使用的内存被释放。(简单说:用的时候创建,不用的时候被内存释放)。其中C++中有两种存储持续性为自动的变量:自动变量、寄存器变量。2、静态存储持续性:在函数定义外的变量和使用关键字static定义的变量。它们在程序整个运行过程中都存在。C++中有3中存储持续性为静态的变

2021-07-30 14:50:22 268

引用用于结构tim.cpp

引用用于结构的程序例子

2021-07-25

C++的广搜深搜算法及入门级别动态规划.pdf

C++的广搜深搜算法及入门级别动态规划.pdf

2021-07-22

计算两天出行时间的程序编写

计算两天出行时间的程序编写

2021-07-21

buildstr.cpp

创建一个函数,函数返回一个指针,函数接受两个参数:一个字符,一个数字,使用new创建一个长度与数字参数相等的字符串,将每个元素都初始化为该字符,返回指向新字符串的指针。

2021-07-18

jisuan_str.cpp

计算特定的字符在字符串中出现的次数

2021-07-18

空空如也

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

TA关注的人

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