自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++基础讲解第一期(超详细)

这里写目录标题一、面向对象概述1、C++发展2、为什么要学习C++3、面向对象和面向过程4、C++与C语言相比的改进5、面向对象的三要素(中心思想)二、C到C++的过度1、第一个代码一、面向对象概述1、C++发展1998开始,c++98—>c++03—>c++11—>c++142、为什么要学习C++众所周知,c++是一门面向对象的语言,在世界上的地位非常高,使用非常广泛,就业前景好。c++是c语言的升级版,c++几乎完全兼容c语言。应用范围:应用软件开发、游戏开发、多媒体开发、

2022-03-26 17:58:47 1197

原创 OSI七层网络协议及TCP/UDP、C/S架构详解

OSI七层网络协议及TCP/UDP详解一、OSI七层网络、Linux四层网络模型1、为什么需要网络通信2、通讯设备有哪些3、什么是通信协议?作用是什么?二、OSI七层协议1、物理层一、OSI七层网络、Linux四层网络模型1、为什么需要网络通信进程间通讯解决的是本机内的通讯,而网络通信解决的是任意不同机器间的通讯2、通讯设备有哪些网卡:PC机自带路由器,交换机光纤、电缆、基站3、什么是通信协议?作用是什么?通信协议是指双方实体完成通信或者服务所必须遵循的规则和约定。协议定义了 数据

2022-03-25 22:36:51 3679 3

原创 希尔排序算法思想及代码

希尔排序一、希尔排序算法思想二、代码一、希尔排序算法思想希尔排序是特殊的插入排序,直接插入排序每次插入前的遍历步长为1,而希尔排序是将待排序列分为若干个子序列,对这些子序列分别进行直接插入排序,当每个子序列长度为1时,再进行一次直接插入排序时,结果一定是有序的。常见的划分子序列的方法有:初始步长(两个子序列相应元素相差的距离)为要排的数的一半,之后每执行一次步长折半。二、代码#include<stdio.h>#include<stdlib.h>#define MAX

2022-03-24 23:25:05 610

原创 直接插入排序算法思想及代码

直接插入排序一、直接插入排序算法思想二、代码一、直接插入排序算法思想直接插入排序算法思想:其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。二、代码#include<stdio.h>#include<stdlib.h>#define MAX 10void insert(int arr[],int n){ int i,j; int temp;//用来保存 比较值 for(i = 1;i < n;i+

2022-03-24 22:31:29 1202

原创 冒泡排序算法及代码

冒泡排序一、算法思想二、具体代码一、算法思想冒泡排序算法:其实相当简单,从头或尾开始(假如从数组头开始)每次比较当前元素和后一个元素,如果当前元素大于后一个元素,则将他们交换。这样一趟排序下来就会将最大的元素放在数组末尾(升序)。然后第二遍遍历就是将第二大放在右边第二的位置。以此类推二、具体代码#include<stdio.h>#include<stdlib.h>#define MAX 10int main(){ int arr[MAX] = {13

2022-03-23 23:33:39 5167

原创 快速排序算法讲解及代码(详细)

快速排序算法一、序言二、快速排序基本思想三、具体步骤四、具体代码一、序言快速排序是一种高效且使用广泛的排序算法,在很多语言的标准库中自带的排序都是快速排序。所以我们也有必要了解快排的原理以及实现方法。二、快速排序基本思想算法思想:快速排序实现的重点在于数组的拆分。通常我们将数组的第一个元素作为比较元素,然后将数组中小于比较元素的数放到左边,将大于比较元素的放在右边。这样我们就将数组拆分成了两部分:小于比较元素的数组和大于比较元素的数组。我们再对这两个数组进行相同的拆分。直到拆分到不能再拆分,

2022-03-23 22:53:15 3733 1

原创 程序员招聘笔试面试题第一期(程序设计基础——变量)

程序设计基础—变量一、知识要点归纳1.C语言数据类型2.变量的作用域和变量在内存中的存储方式a)局部变量和全局变量b)变量的存储类别(auto、register、extern、static)c)内存组织结构二、面试真题及解析 面试题1 面试题2 面试题3 面试题4 面试题5欢迎来到程序员面试笔试题总结 第一期 一起来提升吧!—————————————————————————————————一、知识要点归纳1.C语言数据类型2.变量的作用域和变量在内存中的存储方式a)局部变量和全局变量变量

2022-03-21 06:00:00 6987 2

原创 解决vscode空格间距过小 tab只能退两格不是四格的问题(一句话解决 超简单)

解决vscode空格间距过小 tab只能退两格不是四格的问题1.首先打开vscode2.打开设置3.搜索框输入font4.修改Font Family5.修改成功 重新启动vscode就可以了1.首先打开vscode2.打开设置在左下角点击设置3.搜索框输入font下方会出现 Font Family4.修改Font Family将方括号里面修改为下方代码即可Consolas, 'Courier New', monospace5.修改成功 重新启动vscode就可以了...

2022-03-10 15:27:09 1912 4

原创 Linux网络编程

Linux网络编程一、理论概念二、服务端客户端通讯步骤1、第一步 建立套接口socket2.在绑定之前 初始化地址3.第三步Bing绑定4.listen监听5.Accept连接6.收发函数7.客户端向服务端请求连接connect函数8.TCP模型9.具体代码一、理论概念因为udp不建立连接 所以不知道对谁收发信息 所以只能用sendtorecufrom 因为它有六个参数 前四个跟send一样 后面两个时地址AF_INET表示IPV4一般我们使用sockaddr_in只需要配置前三

2022-03-09 22:03:37 2930 2

原创 Linux多线程编程

Linux多线程编程一、线程理论基础二、多线程程序设计三、线程==同步==(按顺序)一、线程理论基础有了进程,为何还要引入线程呢?使用多线程有哪些好处?1、和进程相比,线程是一种非常节俭的多任务操作方式,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表维护它的代码段、堆栈段、数据段,这是一种昂贵的多任务工作方式运行于一个进程中的多线程,它们之间使用相同的地址空间,而且线程间彼此切换所需的时间也远远小于进程间切换所需要的时间2、线程间方便的通讯机制,对不同进程来说,它们具有独立的数据空间

2022-03-07 20:19:44 2442

原创 Linux 进程间通信编程

Linux 进程间通信编程(单机)一、进程间通信概述二、管道通信(默认无名管道)1.创建无名管道函数pipe()2.使用无名管道读取的代码练习三、命名管道1.创建有名管道函数mkfifo()四、信号通信五、共享内存六、消息队列七、信号量一、进程间通信概述1、目的:1)数据传输:一个进程需要将它的数据发送给另一个进程2)资源共享多个进程之间共享同样的资源3)通知事件一个进程需要向另一个或一组进程发送消息,通知他们发生了某种事件4)进程控制有些进程希望完全控制另一个进程的执行,此时控制进程希

2022-03-05 21:37:17 702

原创 停车场管理系统(数据库)

停车场管理系统(使用数据库sqlite3)一、序言二、讲解time_t( )函数 (因为要用到)三、停车场管理系统代码(可运行)1.主函数2.功能函数3.函数声明一、序言本停车场管理系统使用sqlite3所写其主要功能有1.查看车库空位 2.车主选择车位停车3.系统计费 4.查看指定车辆停车记录5.查看所以车辆停车记录 6.退出二、讲解time_t( )函数 (因为要用到)这里讲解下其中获取时间的函数time_t( )其头文件为#include<time.h

2022-03-03 22:04:16 4516 2

原创 进程控制知识点和函数应用

Linux进程控制编程一、进程控制理论1.进程的定义:2.进程的生命周期3.进程的状态4.进程ID5.进程互斥6。临界资源7.临界区8.进程同步9.进程调度10.调度算法二、进程创建1.fork()2.第二种创建子进程vfork()3.fork PK vfork3.exec函数族(有六个函数 掌握一个 其他派生)4.system函数5.进程等待6.第二种进程等待一、进程控制理论1.进程的定义:进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元;程序是放到磁盘的可执行文件

2022-03-03 21:05:25 338

原创 通讯录3.0(数据库版)

通讯录3.0版本一、序言二、功能三、代码1、主函数2、函数声明3、功能函数一、序言这是使用数据库写成的通讯录相较于链表与文件 更加的简洁操作单一 主要是要记得懂得 数据库的命令 然后用C写出最常用的两个函数sqlite3_exec(pdb,sql,NULL,NULL,&errmsg)第一个参数是指向数据库的指针 第二个是你想要执行的命令(提前赋给sql,第三和第四个参数 是当你用这个函数进行查找命令时候 要使用回调函数时候需要传值但是我在需要使用查找命令时 我更喜欢使用sqli

2022-03-02 16:19:07 359

原创 数据库sqlite3的安装与应用

嵌入式数据库一、ubuntu18.04 sqlite3安装1.安装sqlite32. 安装sqlite3可视化工具sqlitebrowser二、数据库基础知识(对于使用数据库作用不大,选看吧)三、关系术语和定义四、sqlite3的语句使用五、SQLite 语法1.大小写敏感性C API使用C语言进行数据库应用代码一、ubuntu18.04 sqlite3安装1.安装sqlite3sudo apt-get install sqlite3sudo apt-get install libsqlite3-d

2022-02-27 21:08:28 1350

原创 通讯录2.0

通讯录2.0序言:一、功能二、代码1.主函数:2.功能函数:3.函数声明:序言:相比于通讯录1.0 加入了文件编程 写了两个函数1.创建一个文件来存储链表结点信息2.使用一个读函数 将文件中的信息读入链表中使得这次创建的结点信息 可以在下次使用通讯录时依然存在 不会丢失一、功能1.增加成员及信息 2.显示通讯录所以成员信息3.查找成员信息 4.删除成员5.修改成员信息 6.存储结点信息7.释放通讯录并退出程序二、代码1.主函数:#include<stdio

2022-02-26 21:24:49 255

原创 Linux文件编程

Linux 文件编程一、Linux系统调用及用户编程接口(API)一、Linux系统调用及用户编程接口(API)本地存储:文件存储:数据库

2022-02-25 21:03:57 528

原创 八大排序(内部排序)

八大排序一、希尔排序一、希尔排序希尔排序是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。直接插入排序 有一个问题如果待排序列中,顺序恰好是逆序,如果用直接插入排序,那将耗费大量的代价,每次都要移动大量 数据,付出非常惨重的代价。 因此 就诞生了 希尔排序, 这个排序方法,可以算是对 插入的一种改进。希尔排序是非稳定排序算法。排序思想: 先把 待排序列 分成若干组,对这若干组进行 插入排序,这样就 一部分 就先有序了, 之后 对这个组 在重新 划分 更小的若干组,进行

2022-02-23 20:18:51 225

原创 通讯录1.0版本

通讯录1.0版本一、介绍二、功能三、代码1.主函数:2.功能函数:3.函数声明:一、介绍这是使用了带表头结点的单链表 制作的通讯录1.0版本没有使用文件,所以信息无法持久化当程序结束时,信息会丢失下次无法访问到这些信息二、功能1.增加成员及信息 2.显示通讯录所以成员信息3.查找成员信息 4.删除成员5.修改成员信息 6.释放通讯录并退出程序三、代码1.主函数:#include<stdio.h>#include<stdlib.h>#inc

2022-02-22 11:07:14 592

原创 栈与队列的操作

这里写目录标题一、栈以及相关操作1.定义及特点2.栈的主要操作3.栈的数组表示-----顺序栈4.具体代码5.链式栈二、队列以及相关操作1.定义2.主要操作一、栈以及相关操作1.定义及特点定义:只允许在- -端插入和删除的线性表;允许插入和删除的- -端称为栈顶(top) ,另一端称为栈底(bottom)。特点:先进后出原因:进栈出栈在同一端2.栈的主要操作3.栈的数组表示-----顺序栈top叫做栈顶指针 但不是真的指针,它只是指向数组的元素位置 所以叫它指针进栈是top先++

2022-02-19 20:43:36 181

原创 C语言完整知识体系总结

C语言的知识体系总结这里写目录标题C语言的知识体系总结序言:C语言的概述历史、特点、标准)1、嵌入式开发为什么选择C语言?(面试题!)2、为什么内核开发选择C语言?3、C语言的缺点:a)面向结构:b)面向对象的特点c)面向结构和面向对象的区别:举例:d)面向对象方法的思想:e)结构化程序具有以下几个特征:4、C语言实现面向对象编程?5、C语言的开发方向6、精通C语言、掌握C语言7、总结:一、C语言基础知识点1、机器码(运行效率、访问硬件能力)2、C语言之父:丹尼斯-里奇3、C语言语法标准:K&RC

2022-02-16 21:10:13 865

原创 单链表 循环单链表 循环双链表的各种插入方法及删除方法

一、线性表二、顺序表三、链表1、单链表结点类型创建插入a)头插法b)尾插法c)中间插入法(插前面)d)中间插法(往后插)删除静态链表循环链表双向链表一、线性表定义n个数据的有限集合特点:除第一个元素外,其他元素有且仅有一个直接前驱除最后一个元素,其他元素有且仅有一个直接后继二、顺序表定义:将线性表中的元素相继存放在一个连续的存储空间中可利用一维数组描述存储结构特点:线性表的顺序存储方式遍历:顺序访问,可以随机存取三、链表1、单链表特点:每个元素由结点构成线性结构:结点可以连续,.

2022-02-15 21:25:24 1237

原创 C语言基础与提高4

函数调用时 是按照形参所写实参是按形参所给在被调用函数中声明的形参数组【】中的大小可以不用关,系统不检查选Dsub1中的a是全局的 因为它自己没有定义而sub2中自己定义了a【】所以是局部的 当这个函数结束时 这个a【】也会消失 什么都不留下自己写 函数 (后面再加)...

2022-01-25 20:06:56 308

原创 关于C语言中遇到的一些问题积累

关于C语言中一些问题积累scanf("%d%*c",&m);这个%*c什么意思呢*%c作用时读取输入流中数字后的一个字符,并丢弃,使得后面的输入函数不能读到那个字符如:scanf("%d %*d %d",&a,&b);当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。*%c则是指跳过字符*所以最上面那一句的%c的作用是拿来吸收回车字符用的...

2022-01-24 16:00:40 252

原创 C语言基础与提高3

函数参数求值顺序从右往左输出顺序从左往右使用可变参数列表 来些求平均值函数

2022-01-23 21:27:10 366

原创 C语言基础与提高2

C语言基础与提高2const 修饰变量 表示这个变量只可读int *a*a是取a指向的地址中的值(是取内容)*a++ a所指地址中的内容加一a++ 地址指向++查!!!

2022-01-21 21:59:41 357

原创 教你理解复杂的C - C++声明

介绍曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地 理解任何C/C++声明的“右左法则”。需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注 意:为了保证能够在同一行上显示代码和相关注释,本文最好在至少1024x

2022-01-21 20:16:00 24

原创 C语言基础与提高1

C语言基础与提高分析:控制每行怎么输出第一行用for小循环下就行 然后换行第二行用----来划分开 (注意每个字符占4列)从第三行开始 是循环的嵌套分为三部分 第一部分是输出表头1| 2|这样 就用3%d加个|第二部分是下一个循环是在 i 前面是“空格” 第三部分 i 后面是相乘i*j 然后换行 一次循环结束 然后开始第四行循环对数组的操作是对数组元素的操作 不可以整体操作变量是内存空间的映射指针变量占8个字节58-10064 32 16 8 4 2 1\ddd:\101 =6

2022-01-19 21:06:18 376

原创 gdb调试程序的使用 和 工程管理器make的使用及格式 和 项目模板的使用 以及 脚本shell的知识点

主要查功能错误 控制程序运行首先用gcc -g 将调试命令加入程序然后启动gdb 设置断点 然后runinfo break 查看断点信息n表示往下单步运行print 加变量 查看变量当前值continue 表示继续运行到下个断点q 退出调试模式list 默认每次显示十行代码list加行号 表示从这行开始显示代码(在调试模式下查看代码)start 开始执行程序,只开始第一句 然后等命令set 设置变量值clear 什么也不加 断点全部删除加断点所在行号 删除断点而delete.

2022-01-17 20:27:32 125

原创 Linux基本命令和静态库和动态库的建立即区别

1.文件目录处理类指令su切换用户tar cvzf 压缩 后面跟两个文件名 最后面的文件名是压缩完成的文件名tar xvzf 解压ifconfig 查看虚拟机ip地址ifconfig eth0 加上想改成的ip地址 修改ip地址(eth0我的电脑可能不是这个 先查看ip地址 就可以知道自己的是什么了)我的是ens33passwd 修改用户密码cat 顺序显示文件内容tac 倒叙显示文件内容more 分页查看文件内容,回车键向下一行,空格键向下一页lesshead -nx 取文件首n行

2022-01-15 20:04:40 390

原创 VMware安装Ubuntu电脑蓝屏报错:你的设备遇到问题,需要重启;我们只收集某些错误信息,然后为你重新启动。

VMware安装Ubuntu电脑蓝屏报错:你的设备遇到问题,需要重启;我们只收集某些错误信息,然后为你重新启动。

2022-01-14 10:10:01 8509 13

原创 嵌入式开发与传统开发的区别

嵌入式开发与传统开发的区别传统开发主要是硬件与软件 他们直接直接交流 当硬件发生改变时软件也要做大幅度改变而嵌入式开发中加入了以恶搞起到承上启下作用的操作系统用它来间接联系硬件与软件。这样降低了硬件与软件的耦合度高的问题Linux的基本命令cd -是指回到这个目录之前的目录中cd ~回到当前用户的home目录cd ~后面加用户名 是指回到指定的用户的家目录中PATH是搜索路径b是快设备文件c是字符设备d是目录p是有名管道文件名是以. 开头 是 隐藏文件.表示当前目录…表示当前目

2022-01-13 20:11:40 403

原创 线性表表长是否要算入头结点

在王道2022版《数据结构》中:第27页有句:**空表中 头结点的指针域 为空 **也就是空表中可以有头结点而而线性表长度为0时,称为空表由以上可知线性表的长度是不包括头结点的

2021-05-25 10:50:52 1809

原创 C语言中const、auto、register、volatile和typedef、枚举、联合体的使用和注意事项

铁布衫:const1.修饰变量,使被修饰的变量只能被访问不能被修改2.当修饰一些构造类型和指针及其参合体时,会有些迷惑性,但是我们可以通过将类型去掉,看const修饰谁,谁就有铁布衫,值就不能够被修改(1)去掉int,变成const a = 10,所以a的值不变(2)去掉int,同上,效果一样(3)去掉int,变成const a【10】 = {1,2,3,4,5,6,7,8,9,10};a数组的值不变(4)去掉int,变为const p;即p指针所指向地址中的值不变(5)去掉int * ,变

2020-10-15 19:55:44 128

原创 static、extern的使用及注意点总结

乱世枭雄:static和extern这几天在学习c的基本知识 将今天所学的static和extern知识总结归纳一下!首先在c程序的国度,main就是这个国家的君主,而各个函数则是军阀,main通过“下传圣旨”(就是参数)来调用各个军阀(函数)。然而static函数树立了自己的政权,并不是一味的听从于main函数,他主要不服从的是:static私藏小金库(就是空间)。而extern更加狂妄,不同的国家即不同的.c文件之间可以通过extern互相私通传递信息。二者联合作乱,让编程者逻辑混淆。那么接下来 我

2020-10-13 20:09:26 450 2

原创 负数补码

今天做了个很容易出错的题目总结下 关于负数补码的知识首先在计算机系统中数据都是以补码存储的正数的补码很简单就等于其二进制原码负数的补码1.先将负数的绝对值进行二进制转换2.将最高位即符号位变为1(符号位为1表示负数 0为正数)3.然后求反码(除符号位 其他取反就可以)4.最后求补码 即在反码最低位加1例如:-5的补码1.首先绝对值二进制为0000 01012.符号位变1 即1000 01013.取反码 即1111 10104.补码为1111 1011强调一点 -128的补码就是

2020-10-11 22:43:41 7858

原创 野指针形成原因和危害以及如何避免

**1.函数指针 指针函数 指针数组 数组指针**int a[][3]={{20,19,18},{33,34,35},{66,37,18},{1,2,3}};&a代表 指向二维数组的指针a 代表 二维数组名,指向一维数组a[0],即第1行首地址a[0] , *(a+0) , *a 都代表 第1行第1列元素地址a+1 , &a[1] 代表 第二行的首地址a[1] , *(a+1) 代表 第二行第一列的元素地址a[1]+2 , *(a+1)+2 , &a[1][2] 代

2020-07-11 14:59:41 642

原创 strcmp和switch函数使用注意事项

使用strcmp函数比较两个字符串时,比较的是字符串的ASCS表大小按ASCII顺序字符串“ABC”小于“abc,所以下面程序输出应该是’yes’#include <stdio.h>int main() {char str1[ ] = “abc”;char str2[ ] = “ABC”;if(strcmp (str1,str2)>0)#格式一定要记得printf(“yes”);elseprintf(“no”);return 0;}使用switch case函数 要

2020-07-11 14:53:46 440

shell编程及c开发环境搭建 2020-1-16

一、 正则表达式1.正则表达式就是用一个字符串来描述一个特征,然后去验证其他字符串是否符合这个特征。2.【】是为了解决.号匹配过于广泛的问题,指定一个范围如t【aeio】n 只能匹配tan,ten,tin,ton。3,.或运算符 |t(a|e|i|o|oo)n匹配 tan ,ten,tin,ton,toon在LINUX中,正则表达式() {} | + ?要加\转义,因为有特殊含义要表示....

2020-01-17 10:02:19 100

原创 vi文本编辑器和用户管理 2020-1-14

vi 文本编辑器1.vi是Linux c中的 在其中输入vi a.txt创建文本a ,进入vi文本后是命令模式,按i进入编辑模式。按ESC退出编辑模式。输入:wq 是保存并退出文本模式,输入:q!是退出但不保存。2.在vi中 按x是删除光标所在位置的字符 nx是光标往后n个字符按X时删除光标前的字符,nX光标往前n个字符的删除按dd删除光标所在行,ndd删n行yw将光标所在处到结尾复制...

2020-01-14 20:55:24 155

空空如也

空空如也

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

TA关注的人

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