自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(88)
  • 资源 (1)
  • 收藏
  • 关注

原创 C语言进阶——指针进阶

C语言指针进阶一、字符指针指针的初阶我们可以参看这篇博客C语言初阶——指针,这篇博客主要有四个重要结论,也是初阶指针的重要概念:1. 指针是地址,指针变量是一个变量,用来存放内存单元的地址,通过指针能找到以它为地址的内存单元。2. 指针的大小是固定的4/8个字节(32位平台/64位平台)。3. 指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。4. 指针的运算。下面我们将继续探讨指针的进阶部分一、字符指针在2.1指针的类型中我们知道有一种指针类型为字符指针 ch

2021-07-09 15:19:30 969

原创 C++STL关联式容器——哈希开散列、闭散列、unordered_map和unordered_set的模拟实现

一、哈希的基本概念1.1 什么是哈希?我们都知道在顺序结构和平衡树中,查找一个元素通过比对关键值来查找。**顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log2Nlog_2Nlog2​N),**简单来说,搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。当向该结构中:插入元

2021-06-22 22:17:18 299 2

原创 Linux网络——图解HTTPS协议与端口号认识

在Linux网络——图解HTTP协议博客中详细解释了http协议,最后总结出HTTP协议主要有以下不足之处:通信使用明文(不加密),内容可能会被窃听;例如我们使用抓包工具就可看到用户的敏感信息。不验证通信方的身份,因此有可能遭遇伪装无法证明报文的完整性,所以有可能已遭篡改接下来从上面三个特点来了解HTTP是怎么弥补这些不足之处的首先我们要清楚,只要数据经过网络都会被看到,无非是通信的内容是否加密,即使被加密的报文也是会被窥视到的。一、确保HTTP安全的方式1.1 HTTP明文加密&lt

2021-06-21 16:49:00 1309

原创 二叉树进阶——迭代实现前中后序遍历

二叉树的递归遍历代码简单且容易理解,具体可以看这篇博客,里面的递归解释的较为详细数据结构——二叉树的链式结构及实现(C语言)然而现实生活中,一棵树的节点往往较多且深度更深时,如果继续使用递归就会产生较多的栈帧,导致栈溢出,对于Linux的进程地址空间来说,一个进程所分配的栈的空间大小是有限且较小的,因此这时候我们就需要使用迭代的方式来实现一棵树的遍历。不过对于现代编译器而言,debug版本下的递归较大时会导致栈溢出,但是release版本编译器做了优化往往和迭代的效率差不多。尽管这样,迭代方式还是要

2021-06-16 20:48:24 703

原创 Linux网络——图解HTTP协议

一、HTTP协议概念1.1 什么是http协议?协议 :网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTPP有多个版本,目前广泛使用的是HTTP/

2021-06-03 17:16:24 1535 19

原创 Linux网络——TCP socket的API使用和单进程的TCP网络程序

上一篇博客已经介绍了TCP和UDP的的初步认识和socket编程部分APILinux网络——网络编程的基本知识、socket网络编程接口和UDP网络程序实战本篇博客将回顾并整理socket编程的相关API一、TCP的socketAPI详解1.1 创建 socket 文件描述符 (TCP/UDP)int socket(int domain, int type, int protocol);socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符;应用程序可以像

2021-05-20 17:37:37 358 7

原创 数据结构——二叉搜索树的C++实现

数据结构——二叉搜索树的C++实现GitHub下载链接:一、二叉搜索树的基本概念和存储结构1.1 基本概念1.2 二叉搜索树的结构二、二叉搜索树的基本操作2.1 二叉搜索树的查找2.2 二叉搜索树的插入2.3 二叉搜索树的删除三、二叉搜索树的实现1.BSTree.hpp四、二叉搜索树的应用——KV模型1.BSTreeKV.hppGitHub下载链接:https://github.com/Kyrie-leon/Data_Structures/tree/main/BSTreeNode一、二叉搜索树的基本概

2021-05-16 00:10:35 663 1

原创 Linux网络——网络编程的基本知识、socket网络编程接口和UDP网络程序实战

一、网络编程基本知识1.1 源IP地址和目的IP地址在ip数据包头部,有两个ip地址,分别叫做源ip地址和目的ip地址源ip地址标记着数据是从哪里发出来的,目的ip地址表示发往那台主机IP地址标定全网内唯一一台主机1.2 端口号和PID端口号(port)是传输层协议的内容.端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;IP地址 + 端口号能够标识网络上的某一台主机的某一个进程,进一步可认为全网内唯一的一个进

2021-05-15 00:05:03 3753 20

原创 C++多态——多态、抽象类的基本概念,重写、重载和重定义的区分

一、多态的概念和定义1.1 什么是多态?多态就是去完成某个行为时,不同的对象就会产生出不同的状态。例如:购买火车票时,普通人全票,学生半价买票。1.2 多态的定义及实现<1> 虚函数在使用多态前引入一个概念——虚函数即被virtual修饰的类成员函数称为虚函数多态的构成条件 //BuyTicket()被virtual关键字修饰,就被称为虚函数 virtual void BuyTicket() { cout << "全价买票" << endl;

2021-05-12 18:52:45 1602 3

原创 Linux网络——认识网络、模型分层、数据包封装和分用

一、从网络发展认识TCP/IP四层模型计算机网络发展可以分为以下四个过程独立模式(单机互相独立)网络互连(多主机连接数据共享)局域网LAN(多主机由交换机和路由器连接)广域网WAN(全世界计算机互联)这样的发展过程也能帮我们认识TCP/IP四层模型,下面我们详细来说每个过程,这个过程帮助我们建立对计算机网络分层模型的整体认识,不谈网络各层的细节很久以前,所有的计算机都是独立运行的,它们之间不能共享数据,每个计算机都只存各自的数据,想要完成一项任务你就需要不停的更换计算机,如果这几台机器在

2021-05-10 16:49:35 2665 6

转载 C++前缀运算符与后缀运算符的区别

前缀++和后缀++的区别i++: 先访问i再进行++操作++i:先进行++操作再访问i在运算符重载中前缀++和后缀++的使用案例背景:有一个Point类,有成员变量x和y,现需要对Point类重载“++”前缀++:++i最后返回的是被++对象的引用,因此“++i”可以作为左值(例如进行赋值操作:++i=5;)Point& Point::operator++(){x++;y++;return *this;}后缀++:i++最后返回的是被++对象的值,因此“i++”不可以作

2021-05-07 09:29:07 919

原创 Linux多线程——基于环形队列的生产消费模型

这里写目录标题一、POSIX信号量1.1 什么是POSIX信号量?一、POSIX信号量POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。1.1 什么是POSIX信号量?POSIX信号量的本质是一个计数器初始化信号量#include <semaphore.h>int sem_init(sem_t *sem, int pshared, unsigned int value);参数:pshared:0表示

2021-05-06 18:11:14 479 1

原创 C++继承详谈——继承的基本概念和使用、菱形继承、虚拟菱形继承原理和继承的笔试面试题

这里写目录标题1. 继承的概念和定义<1> 什么是继承?1. 继承的概念和定义首先回顾一下C++面向对象的三大特性:封装、继承和多态。先解释前两个封装:本质上一种更好的管理。相较于C语言面向过程,C++将数据和方法都要放在类中进行管理,再通过访问限定符进行限制。继承:从类设计的角度来说,是为了避免重复定义数据和方法,进行类角度的复用。<1> 什么是继承?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础

2021-05-04 13:49:13 724 3

原创 Linux多线程——生产消费者模型概念和C++模拟实现生产消费者模型

Linux多线程——生产消费者模型概念和C++模拟实现生产消费者模型一、生产消费者模型1.1 什么是生产消费者模型?1.2 为什么使用生产消费者模型?1.3 生产消费者模型的321原则1.4 生产者消费者模型优点二、基于BlockingQueue的生产者消费者模型2.1 什么是BlockQueue(阻塞队列)?2.2 C++模拟实现基于互斥锁、条件变量和阻塞队列的生消费者模型<1> Makefile<2> BlockQUeue.hpp<3> main.cc<4&gt

2021-04-23 17:25:39 513 2

原创 Linux进程通信——匿名管道、命名管道、管道的特性和共享内存

Linux进程通信——匿名管道、命名管道和管道的特性一、管道1.1 什么是管道?1.2 匿名管道<1> 匿名管道参数说明<2> fork共享管道原理<3> 站在文件描述符角度-深度理解管道<4> 管道读写规则<5> 管道的特性与特点总结1.3 命名管道<1> 创建一个命名管道<2> 匿名管道与命名管道的区别<3> 命名管道的打开规则<4> 用命名管道实现server&clinet通信一、

2021-04-06 18:24:09 2382 9

原创 Linux进程控制——进程创建(fork)、进程终止(exit\_exit)、进程等待(wait\waitpid)和进程替换(exec函数)

一、进程创建1.1 fork函数初识对于fork函数的参数和返回值可以阅读本篇博客Linux进程编程实践1——进程的基本概念、fork创建进程这里直接上图了解fork的头文件和参数Q1:为什么父进程返回子进程id,而子进程返回0?现实生活中,任何孩子都知道自己的父亲(排除特殊情况),而父亲却可能有多个孩子,因此就需要一个代号来标识每一个孩子,简单来说就是父亲:孩子=1:n因此,对于操作系统来说,父进程有多个子进程,需要返回子进程的pid来调度每个子进程,而任何子进程都知道自己的父进程,因此返

2021-03-23 10:41:37 1507 1

原创 C++模板初识——泛型编程、函数模板和类模板

C++模板初识——泛型编程、函数模板和类模板一、泛型编程1.1 为什么使用泛型编程?2.2 什么是泛型编程?二、函数模板2.1 什么是函数模板?2.2 函数模板怎么用?<1> 函数模板格式2.3 函数模板的原理<1> 函数模板实例化<2> 模板参数的匹配原则一、泛型编程1.1 为什么使用泛型编程?对于编写一个通用的交换函数,我们可以使用函数重载的方式,函数重载的具体细节可以看以下博客:C++初阶——命名空间、缺省参数和函数重载void Swap(int&

2021-03-15 23:56:11 395

原创 C/C++内存管理——C/C++内存管理方式、new和delete的实现原理和内存泄漏

C/C++内存管理——C/C++内存分布、new和delete的实现原理一、C/C++内存分布一、C/C++内存分布对于C/C++孔家首先来看一下这段代码

2021-03-13 21:38:12 1563 4

原创 Linux概念——进程地址空间

三、程序地址空间对于C语言学习,我们并不陌生这张图<1> 进程地址空间但是对Linux而言,上图叫做进程地址空间,然而上图真的对应物理空间吗?我们运行下面代码来验证#include <stdio.h>#include <unistd.h>#include <stdlib.h>int g_val = 0;int main(){ pid_t id = fork(); if(id < 0) { perror("fork"

2021-03-11 17:30:43 628 1

原创 C++类和对象(下)——初始化列表、static成员和友元

C++类和对象——初始化列表、static成员和友元一、再谈构造函数1.1 构造函数整体赋值1.2 初始化列表三级目录关于C++类和对象的学习C++类和对象(上)——类的基本概念、类的限定符及封装和类成员函数的this指针C++类和对象(中)——类的6个默认成员函数(构造、析构、拷贝构造、赋值运算符重载)一、再谈构造函数1.1 构造函数整体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。例如我们之前创建的Date类class Date{public: D

2021-03-10 16:07:40 7887 12

原创 Linux进程概念——进程优先级、环境变量

Linux进程概念——进程优先级和环境变量一、Linux进程优先级1.1 进程优先级三连问?<1> 什么是进程优先级?(优先权 VS 权限)<2> 为什么要有优先级?<3> 怎么使用优先级?1.2 Linux进程优先级查看和修改<1>查看系统进程<2> PRI和NI的区别与联系<3> 修改进程优先级的命令二、环境变量2.1 基本概念2.2 环境变量的查看和组织<1> 常见的环境变量<2> 查看环境变量方法<

2021-03-08 19:24:00 703

原创 C++类和对象(中)——类的6个默认成员函数(构造、析构、拷贝构造、赋值运算符重载)

@TOC一、类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数二、构造函数2.1 构造函数概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次。2.2 构造函数特性构造函数是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是构造函数的主要任务并不是开空间创建对象,而是

2021-03-07 21:57:46 1758

原创 C++类和对象(上)——类的基本概念、类的限定符及封装和类成员函数的this指针

C++类和对象——类的基本概念、类的封装和类成员函数的this指针一、类的基本概念1.1 类的引入二级目录三级目录一、类的基本概念1.1 类的引入C语言中,结构体中只能定义变量,而在C++中,结构体内不仅可以定义变量,也可以定义函数二级目录三级目录...

2021-03-02 09:16:54 1239 1

原创 Linux进程编程实践2——进程状态、模拟实现僵尸进程和孤儿进程

Linux进程编程实践——进程状态、模拟实现僵尸进程和孤儿进程一、Linux进程状态二、僵尸进程2.1 什么是僵尸进程?2.2 模拟实现僵尸进程Q1:为什么会有僵尸进程?Q2:僵尸进程的危害有哪些?三、孤儿进程3.1 什么是孤儿进程?3.2 模拟实现孤儿进程一、Linux进程状态操作系统的经典三态为:就绪、阻塞、运行对于Linux内核来说我们可以在kernel源代码里看到进程的状态/** The task state array is a strange "bitmap" of* reasons

2021-02-20 16:36:33 1216

原创 Linux进程编程实践1——进程的基本概念、fork创建进程

Linux进程编程实践——进程概念、进程描述、fork创建进程一、进程的基本概念1.1 程序 VS 进程<1> 什么是程序?<2> 什么是进程?<3> 进程和程序的区别1.2 进程数据结构(描述进程)<1> 操作系统的进程描述——PCB<2> Linux下的进程描述——task_struct二、fork创建进程2.1 获取进程标识符与查看进程Q1:为什么要知道一个进程的PID以及它父进程的PID呢?2.2 fork创建进程Q1:如何理解进程创建?Q

2021-02-19 21:56:01 1092 2

原创 Linux基本命令(下)——用户、权限管理

Linux命令——用户权限管理一、Linux用户管理<1> 查看当前用户:whoami<2> 查看登录用户:who<3> 添加用户账号:useradd<4> 设置用户密码:passwd<5> 删除用户:userdel<6> 添加、删除组账号:groupadd、groupdel<7> 修改用户所在组:usermod<8> 查看用户在哪些组:groups二、Linux权限管理2.1 文件访问者的分类(人)2.2 文件

2021-02-17 17:00:08 2145 4

原创 Linux基本命令(中)——系统管理和磁盘管理

Linux命令——系统管理和磁盘管理一、系统管理1.1 时间相关指令<1> 查看当前日历: cal<2> 显示或设置时间: data1.2 进程相关指令<1> 查看进程信息: ps<2> 动态显示进程:top<3> 终止进程: kill1.3 关机重启相关指令:reboot、shutdown、init1.4 网络操作相关指令:ifconfig、ping二、磁盘管理2.1 检测磁盘空间:df2.2 检测目录所占磁盘空间:du一、系统管理1.1 时

2021-02-14 13:46:16 3145 4

原创 C++初阶——引用详解

C++入门一、引用1.1 引用概念1.2 引用特性1.3 常引用1.4 使用场景1.5 传值、传引用效率比较1.6 指针和引用的区别一、引用1.1 引用概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。引用书写格式:类型& 引用变量名(对象名) = 引用实体;举个例子:int就是引用类型,b就是引用变量名,a就是引用实体#include<iostream>using namespace std;

2021-02-01 23:33:49 1738 1

原创 C++初阶——命名空间、缺省参数、函数重载和内联函数

C++入门一、命名空间1.1 命名空间的定义1.1.1 普通的命名空间1.2.2 命名空间的嵌套1.3.1 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。1.2 命令空间的使用1.2.1 加命名空间名称及作用域限定符1.2.2 使用using将命名空间中成员引入1.2.3 使用using namespace 命名空间名称引入二、输入&输出三、缺省参数3.1 缺省参数的定义3.2 缺省参数分类3.2.1 全缺省参数3.2.2 半缺省参数四、函数重载4.1 函数重载概念4

2021-01-31 22:38:04 2422

原创 Linux的C语言开发工具——通过进度条小程序学习使用gcc、gdb和make/Makefile工具

C语言实现进度条程序——gcc、gdb和make工具的使用一、Linux下的进度条程序实现二、Linux编译器-gcc三、Linux调试器-gdb四、Linux项目自动化构建工具-make/Makefile一、Linux下的进度条程序实现二、Linux编译器-gcc三、Linux调试器-gdb四、Linux项目自动化构建工具-make/Makefile...

2021-01-30 23:47:46 3518 2

原创 数据结构——冒泡排序(C语言)

C语言详解冒泡排序一、基本思想二、算法实现及优化三、代码清单一、基本思想冒泡排序是交换排序中最易理解也最经典的一个排序,其基本思想是从左向右依次比较相邻两个元素的大小,如果左边大于右边就交换,一趟排序后就可以让最大的值浮到最右侧。不断重复这个操作就可以让数组有序。二、算法实现及优化想要实现冒泡排序,我们首先写出一趟冒泡排序,很简单,从左向右依次比较即可,只要左边大于右边就发生交换注意:数组有n个元素,我们从数组的第1个元素开始比较,到数组的第n-1个元素结束,共比较了n-1次。例如下图,从第1

2021-01-28 20:38:30 6115

原创 Linxu基本命令(上)——文件管理

Linux基本命令——文件管理一、Linux命令概述1.1 命令使用方法1.2 查看帮助文档1.2.1 --help1.2.2 man(有问题找男⼈,manual)1.3 自动补全1.4 历史命令二、Linux文件管理命令2.1 查看文件信息:ls2.2 输出重定向命令:>分屏显示:more分屏显示:less显示开头:head显示结尾:tail管道:|清屏:clear切换⼯作⽬录: cd创建⽬录:mkdir删除⽬录:rmdir删除⽂件:rm查看或者合并⽂件内容:cat⽂本搜索:grep查找⽂件:fi

2021-01-24 18:39:05 2217 1

原创 数据结构——二叉树的链式结构及实现(C语言)

C语言实现二叉树的链式结构一、二叉树的链式存储二、二叉树链式结构的遍历2.1 前序/中序/后序的递归结构遍历2.1.1 前序遍历一、二叉树的链式存储二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。typedef char BTDataType;typedef struct BinaryTreeNode { BTDataType _dat

2021-01-20 22:56:07 10721 4

原创 数据结构——插入排序(C语言)

C语言实现插入排序一、直接插入排序1.1 基本思想1.2 代码实现1.3 特性总结二、希尔排序1.1 基本思想1.2 代码实现1.3 特性总结一、直接插入排序1.1 基本思想直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。实际中我们玩扑克牌时,就用了插入排序的思想1.2 代码实现我们首先写出插入排序只排一趟的代码,如下图所示,假设数组[0,end]已经是有序数组,那么我们

2021-01-19 22:38:19 3150

原创 C语言初阶——函数

C语言初阶——函数1. 函数是什么2. 库函数3.自定义函数4. 函数参数5. 函数调用6. 函数的嵌套调用和链式访问7. 函数的声明和定义8. 函数递归1. 函数是什么数学中我们常见到函数的概念。但是C语言中的函数是什么呢? 维基百科中对函数的定义:子程序在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method,subprogram, callable unit),是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责

2021-01-16 19:39:11 1906

原创 数据结构——双向循环链表的结构与实现(C语言)

C语言实现带头双向循环链表一、双向链表的结构与实现1.1 带头双向循环链表1.2 带头双向循环链表的实现二、双向链表的接口实现2.1 创建双向链表2.2 双向链表销毁2.3 双向链表在pos的前面进行插入2.4 双向链表删除pos位置的节点2.5 双向链表打印2.5 双向链表尾插2.6 双向链表尾删2.7 双向链表头插2.8 双向链表头删2.9 双向链表查找三、代码清单3.1 List.h3.2 List.c3.3 test.c四、测试结果一、双向链表的结构与实现1.1 带头双向循环链表结构最复杂,

2021-01-12 14:48:13 2662

原创 数据结构——堆(二叉树)的结构及实现(C语言)

堆的C语言实现一、堆的概念及结构二、一、堆的概念及结构什么是堆?如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆二、...

2021-01-10 20:51:35 2370 2

原创 数据结构——队列(C语言)

C语言实现队列GitHub代码下载一、队列的概念及结构二、队列的实现2.1 队列的链式结构存储2.2 初始化队列2.3 队尾入队列2.4 队头出队列2.5 获取队列头部元素2.6 获取队列队尾元素2.7 获取队列中有效元素个数2.8 检测队列是否为空,如果为空返回非零结果,如果非空返回02.8 销毁队列三、队列的接口测试四、代码清单4.1 Queue.h4.2 Queue.c4.3 test.cGitHub代码下载https://github.com/Kyrie-leon/Data_Structures

2021-01-07 18:19:50 2411 2

原创 数据结构——栈(C语言)

C语言实现栈和队列一、栈1.1 栈的概念及结构1.2 栈的实现1.2.1 栈的存储定义二、队列一、栈1.1 栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。1.2 栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的

2021-01-07 12:35:29 2971

原创 C语言初阶——指针

指针一、指针三连问1.1 什么是指针?1.2 为什么使用指针?1.3 指针怎么用?二、指针和指针的类型2.1 指针类型2.2 指针的解引用三、野指针四、指针运算五、指针和数组六、二级指针七、指针数组一、指针三连问1.1 什么是指针?在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单

2020-12-17 21:36:57 8046 24

由于找不到iUtils.dll,无法继续执行代码。重新安装程序可能会解决此问题。

由于找不到iUtils.dll,无法继续执行代码。重新安装程序可能会解决此问题。

2022-07-10

空空如也

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

TA关注的人

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