自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 实现cp命令的功能 linux

**实现cp命令的功能**#include <stdio.h>#include "teacher.h"int main(int argc,const char* argv[]){ //main函数参数中argc代表了命令行参数的总个数 //argv代表了每个参数字符串的首地址 if(3 != argc) { printf("User:cp src dest\n"); return 0; } //以只读方式打开源文件

2021-07-19 11:10:21 228 1

原创 函数指针 回调快速排序 快排 二分查找

函数指针:函数返回值(*函数指针名p)(参数列表);函数指针就是指向函数的指针,里面存储的就是该函数在代码段的位置。函数指针中储存了函数的首地址,对它解引用就可以执行函数定义函数指针: 返回值类型(*指针变量名)(类型1,类型2,...);举例: int(*compar)(const void *, const void *);定义函数指针强化版本: typedef 返回值(*指针名)(类型1 参数名1;类型2 参数名2 ...); (此时指针名就是这种类型)

2021-07-08 18:53:52 116

原创 数据结构 链表 环形链表 文件中数据用树保存

常用的数据结构有哪些表、树、图、栈、队列、数组等。链表链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。数据元素存储在彼此独立的内存空间中,每个数据元素中增加一个数据项用于存储其它元素的地址(指针域),用来表示数据元素之间的关系。链表的优点:1.插入删除方便且速度快;2.内存利用率高,不会浪费内存;3.大小没有固定,拓展很灵活。链表的缺点:不能随机查找,必须从第一个开始遍历,查找效率低。判断环形链表快慢指针法: 首先创建两个指针1和2,同时指向这个链表的头节点

2021-06-15 20:07:16 170

原创 C++小结 面试题 多态 封装 继承 虚函数 纯虚函数

C++的四个基本特征、什么是多态抽象、封装、继承、多态。多态:发出一个指令,系统会根据实际情况执行相应操作,这种特性就叫多态(同一个命令有多种形态)。解释一下C++中多态是什么多态:发出一个指令,系统会根据实际情况执行相应操作,这种特性叫做多态(同一个命令有多种形态)。编译时多态:具体调用哪个版本的函数是编译器在编译时就能确定。运行时多态:用虚函数机制实现的,在运行期间动态绑定。C++的封装继承多态封装:把抽象的结构封装成一个类(结构),并给类的成员函数、成员变量设置相应的访问权限。

2021-06-14 10:58:18 259

原创 C语言常见面试题 笔试题 总结 makefile const和#define的区别 地址重叠 Memcpy sizeof和 strlen 大小端转换 堆和栈的区别 内存管理 static,extern

从.C文件到可执行文件具体流程,指针的作用具体流程:1、预处理:把源文件翻译成预处理文件gcc -E code.c 显示与处理结果gcc -E code.c -o code.i 生成以.i 结尾的预处理的文件2、编译:把预处理文件翻译成汇编文件gcc -S code.i 默认生成以.s 结尾的汇编文件3、汇编:把汇编文件翻译成二进制的目标文件gcc -c code.s 默认生

2021-06-13 10:24:07 343

原创 字符串处理函数 strlen、strcpy、strcmp、strcat 的实现

字符串处理函数strlen、strcpy、strcmp、strcat#include <stdio.h>#include <assert.h>size_t str_len(const char* str){ //if(NULL==str) return 0; assert(NULL != str); const char* tmp = str; while(*tmp) tmp++; return tmp - str;}char* str_cpy(char

2021-04-27 19:57:20 104

原创 c语言32个关键字 内建类型 自建类型 类型限定符 分支 循环 跳转

c语言32个关键字数据类型相关: 内建类型: void char short int long float double 7 自建类型: struct union enum sizeof 4 类型限定符: auto const static volatile register extern typedef signe

2021-04-26 18:51:17 121

原创 STL模板库 常用函数 vector向量容器

STL模板库STL是Standard Template Library缩写,中文名字叫标准模板库,由惠普实验室提供,共有三类内容:算法:以函数模板形式实现的常用算法,如:max、min、swap、find、sort。容器:以类模板形式实现的常用数据结构,如:栈、队列、链式表、顺序表、红黑树。迭代器:它是容器的成员,用于帮助访问容器中的元素,使用方法类似于指针。常用函数#include <algorithm>iterator find( iterator start, iterat

2021-04-20 09:54:56 159

原创 什么是模板 为什么使用模板 函数模板

一、什么是模板是一种自动生成代码的技术,这种技术能让程序员在编写代码时不需要考虑数据类型,这种技术被称为泛型编程技术二、为什么使用模板1、C/C++是一种静态编程语言(预处理->编译->汇编->链接->可执行文件)静态语言的优点就是运行速度比较快,而缺点是实现通用的代码比较麻烦任务:实现一个通用的快速排序算法2、借助回调模式实现通用代码,实现难度高,使用也比较麻烦3、借助宏函数实现通用,类型检查不严格,没有返回值、容易出错4、借助函数重载实现通用代码,会使代码段增加

2021-04-16 18:54:09 1488 1

原创 继承方式与访问属性 多重继承和钻石继承 虚函数、覆盖 多态 虚构造和虚析构 纯虚函数和纯抽象类

继承方式与访问属性访问控制属性决定了成员的访问范围: public 可以在任何位置访问 private 只能在类内访问 protected 只能在类内和子类中访问继承方式的影响: 1、父类的成员能否在子类中访问,是设计父类时访问控制属性决定的;继承方式能决定父类成员被子类继承后,在子类中变成什么样的访问控制属性,见下表: 父类中属性 public继承 provite继承 private继承

2021-04-14 19:27:11 103

原创 继承 继承的语法 继承表 继承的特点 父类 子类

一、继承1、当遇到问题时,先查看现有的类能否解决一部分问题,如果有则通过继承语法,在此类的举出上进行扩展来解决问题,来缩短解决问题的时间(代码复用)2、当遇到一个复杂问题时,可以先把复杂问题分解成若干个小问题,然后为每个问题设计一个类进行解决,最终通过继承语法把这些类汇总到一个类中,达到解决问题的目的,以此降低解决的难度,同时也可以让多个程序员同时解决该问题二、继承的语法1、继承表 class Test:继承表[继承方式 父类] { 成员变量; public

2021-04-13 18:15:10 524

原创 操作符函数 运算符函数格式 双目运算符 友元 输入输出运算符 运算类的单目运算符 自变运算符 重载 特殊运算符函数 智能指针

一、 操作符函数在C++中会把运算符当函数处理,一个表达式,其实是调用了很多运算符函数完成计算的;这种特性对内建类型没有什么用处,但是对自建内型数据,却可以进行个性化设计,提高代码的可读性和易用性(如 string 类)string str;str += "hehe";str1 == str2;运算符函数的格式:单目运算符:#O 或 O# 会被编译器解释为 [] O::operator#(void) { } 返回值不确定,唯一的参数是调用者全

2021-04-13 10:05:41 151

原创 对象的创建和销毁过程 成员函数区别调用的对象 常用成员 常函数 const C/C++中const异同点 空结构体字节

一、对象的创建和销毁过程1、对象的创建过程 a、给对象划分内存空间(栈、堆) b、执行初始化列表 根据继承表顺序调用父类的构造函数,也可以调用有参构造,类名(参数) 根据成员的定义顺序调用类类型成员的无参构造函数,也可以调用有参构造,成员名(参数) 初始化其它成员 c、执行构造函数,申请资源2、对象的销毁过程 a、执行析构函数,释放资源 b、根据成员的定义逆序调用类类型成员的析构函数 c、根据继承表顺序逆序调

2021-04-07 20:32:52 133

原创 默认形参 内联函数 引用 取别名 指针与引用的相同点和不同点 强制类型转换 面向对象与面向过程 类和对象 访问控制限定符 构造函数 析构函数 初始化列表

一、默认形参1、什么是默认形参 在C++中可以给函数的参数设置默认值,当函数被调用时调用者提供了实参则使用实参,如果没有提供则使用默认值2、默认形参要靠右 如果函数有多个参数,设置了默认形参,默认形参必须要从右到左连续排列3、只在声明时设置默认形参 如果函数的声明和定义分开实现,只在函数声明时设置默认形参即可,否则会出现语法错误4、默认形参可能会影响重载的效果 如果对函数进行了重载,又设置了默认形参,调用时可能会造成冲突;因此为重载过的函数设置默认形参时一定要慎重

2021-04-06 18:15:15 95

原创 C++ C++与C的区别 C++与C数据类型的不同 名字空间 匿名空间 C++的堆内存管理 函数重载

一、C++介绍本贾尼·尼特芝斯特鲁普,于1979年4月份在贝尔实验室分析UNIX系统分布内核的流量时,特别希望有一种更加模块化的工具,于是在1979年10月开始着手开噶一种新的编程语言,在C语言的基础上增加了面向对象机制,这就是C++,在1983年完成了C++的第一个版。C++与C的重要区别: 1、C++完全兼容C的所有内容 2、支持面向对象的编程思想 3、支持运算符重载、函数重载的编译时多态机制 4、泛型编程、模版 5、支持异常处理 6、类型检查更严格

2021-04-01 19:32:56 181

原创 多路复用 select pselect poll epoll epoll的条件触发和边缘触发

多路复用使用一个进程(且只有主线程)同时监控若干个文件描述符的读写,这种读写模式叫多路复用。多用于TCP的服务端,用于监控客户端的链接和数据的收发。优点:不需要频繁的创建、销毁进程,从而节约了内存资源、时间资源,也避免进程之间的竞争、等待。缺点:单个客户端的任务不能太耗时,否则其他客户端就会感知到。适合并发量高,但任务短小的情景,如:Web服务器。select#include <sys/select.h>#include <sys/time.h>#include

2021-03-31 20:46:25 142

原创 TCP网络传输代码 网络通信

TCP_CLIENT.C:#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <unistd.h>int main(int argc,const char* argv[]){ //创建s

2021-03-31 09:14:38 286

原创 线程管理 POSIX线程 线程函数 pthread 主线程与子线程传参 线程的结束 线程的取消操作 线程分离 线程同步 互斥量 条件变量 死锁问题 死锁的检测

线程管理线程介绍:线程就是进程中负责执行的部分,是进程内部的控制序列。它是轻量级的,没有自己独立的内存资源、代码段(text)、数据段(静态数据bss、全局数据段data)、堆(heap)、环境变量、命令行参数、文件描述符、信号处理函数、当前工作目录但是线程拥有独立的栈内存,也就是说它有自己独立的局部变量 一个进程中至少有一个线程,我们把它叫做主线程,也可以再创建多个线程注意区别:进程是个资源单位,而线程是个执行单位,线程是进程的一部分,进程中正是有了线程才能动起来POSIX线程:

2021-03-26 20:33:19 140

原创 功能受限的表结构 顺序栈 链式栈 栈的应用 队列 链式队列 队列应用

功能受限的表结构对表结构加以限制、形成特殊的表结构栈:只有一个出入口的表结构,先进后出 (FILO->fast in later on)顺序栈: 数据项: 存储元素的内存首地址 栈的容量 栈顶位置 运算: 创建、销毁、入栈、出栈、栈空、栈顶 链式栈: 数据域: 栈顶 节点数量

2021-03-25 19:45:01 80

原创 树型结构 概念 表示方法 节点 深度 树的存储 二叉树 二叉树性质

树型结构1、树的基本概念 是一种表示层次关系(一对多)的数据结构 有且仅有一个特定的节点,该节点没有前驱,被称为根节点 剩余的n个互不相交的子集,其中的每个子集也都是一棵树 注意:属性结构具有递归性(树中有树)2、树的表示方法 倒悬树、嵌套法、凹凸法3、树的专业术语 节点:组成树的基础元素,同时,节点它也是一棵树 节点的度:该节点子树的数量 树的度(密度):树中节点的数量 树的高度:树的层数 树的深度:树的最大层次为

2021-03-24 09:47:54 240 1

原创 系统调用 文件分类 IO 调用 文件读写 文件描述符

系统调用(系统API(API:接口)):系统调用就是操作系统提供的一些功能供程序员调用,这些系统调用已经被封装成c函数的形式,但是它们不是标准c的一部分一般的应用程序运行在用户态,[0-3G)的内存。使用系统调用时进入内核态进行系统调用(3-4G)。常用的标准库函数大部分时间都运行在用户态,底层偶尔也会调用系统调用进入内核态系统调用的代码是内核(代码)的一部分,其外部接口以共享库函数的形式提供(linux-gate.so \ ld-linux.so),并且这些接口的实现利用软中断进入到内核执行其

2021-03-05 17:20:31 151

原创 数据结构 顺序表 链式表

一、什么是数据结构1、数据结构的起源1968年,美国高德纳教授,《计算机程序设计艺术》第一卷《基本算术》出版,开创了数据结构与算法的先河。数据结构是一门研究数据之间关系和操作的学科,而非是计算方法。数据结构+算法=程序 沃斯,凭借这个观点,过得图灵奖,因为这句话展示了程序的本质2、数据结构的基本概念 数据:所有能够输入到计算机中的、能被程序处理的描述客观事物的符号 数据元素:数据的基本单位,也叫做节点、记录 数据项: 有独立意义的数据的最小单位,也叫域 数据结构

2021-01-17 18:38:35 145

原创 结构体 大小端 枚举

结构:结构是由程序员自己设计的一种数据类型,用于描述一个事物的各项数据,由若干个不同的基础数据类型组成。设计结构:struct 结构体名{ 类型 成员名; ...};注意:一般结构体名首字母大写定义结构变量:struct 结构体名 变量名;注意:定义结构变量时,struct不能省略定义初始化结构变量:struct 结构体名 变量名 = {v1,v2,v3...};根据成员的顺序进行初始化struct 结构体名 变量名 = {.成员名=v2,.成员名=v3..

2021-01-08 20:39:53 98

原创 指针数组与数组指针 二级指针

指针数组与数组指针:指针数组:是由指针组成的数组,它的成员都是指针变量类型* arr[长度];数组指针:专门指向数组的指针 类型 (*arrp)[长度];指针与数组名:数组名是一种特殊的指针,它是一个常量,不能修改它的值,它与数组的内存是映射关系,没有自己的内存空间。&数组名 == 数组名 == &数组名[0]指针变量它有自己的存储空间,如果它储存的是数组的首地址,指针可以当做数组使用,数组名也可做指针使用。 (指针与数组

2020-12-27 15:34:54 508 1

原创 指针

什么是指针指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量储存的是整形数据,代表了内存的编号,通过这个编号可以访问到对应的内存。为什么使用指针1、函数与函数之间是相互独立的,但是有些时候需要共享变量 传参是单向值传递(内存的拷贝);//原因1 全局变量容易命名冲突; //2 使用数组还需要传递长度; //3 函数的命名空间是相互独立的,但是地址空间是同 一个,所以指针可以解决这个问题。 //42、由于函数传参是值

2020-12-22 17:13:54 88

原创 ubuntu系统小知识

ubuntu系统快捷键ctrl+alt+t打开终端ctrl+l清理屏幕tab自动补全up/down调出命令执行记录ctrl+alt+方向键切换工作区alt+tab切换任务重定向、管道、通配符重定向就是把命令的执行结果写入到文件中**cmd > filename**:把命令的结果以清空的方式写入到文件中,如果文件不存在则重建**cmd >> filename**:把命令的结果以追加的方式写入到文件中管道相当于用一

2020-12-08 19:34:27 65

原创 Linux系统介绍

Linux系统介绍Linux系统由来BCPL -> new B -> C -> UNIX -> Minix -> Linux其中,C -> UNIX 具有争议一些目录的意义Linux管理硬盘能力很强 所以只有一个分区/根目录 所有的文件都存储在这下面/bin 储存系统命令/dev 设备文件/media 多媒体文件,U盘、光盘、共享文件夹/proc 记录程序运行时的资源的使用情况/sbin 储存超级管理员使用的系统命令/sys

2020-12-07 20:19:26 69

空空如也

空空如也

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

TA关注的人

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