- 博客(38)
- 收藏
- 关注
原创 【网络】网络套接字:UDP/TCP -socket编程
目录一、网络套接字二、网络数据字节序1、字节序是什么2、如何判断自己主机的字节序是大端or小端?3、网络中的字节序4、主机字节序和网络字节序的转换三、UDP-socket编程一、网络套接字在Linux中,Socket(套接字)表示进程间网络通信的特殊文件类型;本质为内核借助缓冲区形成的伪文件;与管道类似,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传递。在TCP/IP协议
2022-10-24 23:33:51
498
1
转载 【零碎知识2】浮点型数据的一般只需虑精度(有效位),范围一般不考虑(够大了)
浮点型数据的范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:因此:float的指数范围为-127 ~ +128,而double的指数范围为-1023 ~ +1024;且指数位是按补码的形式来划分的;浮点型数据的精度float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”;float:2^23 = 8388608,一共七位,这意味着最多能
2022-05-24 09:39:34
228
原创 【C++】类(下):类成员与explicit、const、mutable、volatile、static、friend关键字
详谈关键字explicit、const、mutable、volatile、static、friend 和类
2022-04-27 21:15:46
1244
13
原创 【Linux】进程控制(一)进程创建(原理+接口调用)及虚拟地址空间
详解 进程创建fork函数、Linux的虚拟内存机制、写时拷贝机制...
2022-04-15 23:50:45
976
11
转载 C语言 getchar()、get()、scanf()函数的区别
输入getchar()函数:getchar()函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符,按回车符时退出。使用本函数前必须包含文件“stdio.h”。输入gets()函数:gets()函数接受字符串,同时也可以接受字符串中含有空格符。但是scanf(“%s”,str)不能接受含有空格符的字符串,scanf()函数取数据是遇到回车、空格、TAB就会停止,剩余字符串将留在缓冲区中。输入scanf()函数:1:用于保存读入值的变量必须都是变量指针,即相应变量的地址。
2022-04-03 10:50:26
2149
3
原创 【Linux】Shell 与 权限管理
目录ShellLinux中的权限概念Linux中用户种类文件与文件夹的权限粘滞位ShellShell:命令行解释器,是Linux操作系统的概念。主要的功能:将使用者的命令翻译给OS核心处理,同时将核心的处理结果反馈给使用者。单独谈Linux的Shell概念我们可能一时摸不着头脑,拿我们熟知的windows系统来说吧:用户在操作系统想新建一个文件夹,只需在windows窗口打开文件管理系统,新建文件夹即可,这个窗口,就是Windows特殊的图形用户界面。这个图形用户界面能非常方便用户的使用,
2022-03-21 16:57:41
2871
8
原创 【零碎知识01】二维数组中的*a、a、a[0]、a[0][0]、a[1]、&a[1]
二维数组要深刻理解二维数组,需要了解二维数组的三点特性:1、二维数组本质上是一位数组,他的每个元素都是一维数组;2、当数组名单独出现时,一般指首元素的地址;3、在C语言中,数组与指针有着密不可分的关系:对于二维数组,他的数组名单独出现指一个二级指针的值具体例子设一个二维数组 int a[4][5],一个4行5列的数组,即四个一维数组的组合,每个一维数组有5个元素。a当数组名单独出现时,指的是第一个数组元素的地址,在二维数组中,元素是一维数组,那么一维数组的地址就是一个二级指针。故:a
2022-02-21 22:21:34
15015
10
原创 【数据结构】链表经典练习题
1.移除单链表元素2.逆转单链表3.获取链表的中间结点4.获取链表中倒数第k个结点5.合并两个有序单链表6.单链表一分为二7.判断链表是否为回文结构
2022-01-01 22:16:59
4340
8
原创 【数据结构】链表
目录一、数据结构----链表1.什么是链表2.链表共分几类二、无头结点单向非循环链表1.==单向链表的空间开辟方式==【重点】不带头结点带头结点==头结点是什么?====有无头结点区别==2.申请新结点3.释放链表(不要忘记)4.单链表插入结点(尾插&头插)a.链表是否为空b.==传参为什么用二级指针?==5.单链表删除结点(尾删&头删)a.链表是否为空b.链表不为空6.单链表按数据域查找7.单链表在任意位置插入&删除结点a.为什么不在pos位置之前插入b.为什么不删除pos位置8.
2021-12-13 15:50:51
885
原创 【数据结构】动态顺序表
目录一、数据结构前言1. 数据结构:==数据和数据间的组织方式==2. 程序(数据和函数组成) = 数据结构 + 算法3. 时间复杂度4. 空间复杂度二、顺序表1.顺序表的两种开辟方式一、数据结构前言1. 数据结构:数据和数据间的组织方式2. 程序(数据和函数组成) = 数据结构 + 算法3. 时间复杂度概念:一个算法程序的某一语句的执行次数(而不是该算法的运行时间);时间复杂度是一个函数 T (n) ,为方便一般使用大O表示法标准:渐进时间复杂度 O (f (n));常见算法时间复
2021-11-27 22:50:40
857
2
原创 C语言 一些字符串库函数和其模拟实现
目录字符串函数(下列头文件均为“string.h”)1.strlen (求字符串长度)原型模拟实现2.strcpy (字符串拷贝)3.strcat(字符串拼接)4.strcmp(字符串比较)5.strncpy(长度受限字符串拷贝)6.strncat(长度受限字符串拼接)7.strncmp(长度受限字符串比较)8.strstr(字符串字串查找)9.strtok(字符串打散)10.strerror(错误报告)内存操作函数1.memcpy(按字节内存拷贝)2.memmove( 可按字节拷贝两个重叠内存)3.mem
2021-11-02 00:30:33
850
1
原创 C语言 浮点型在内存中的存储
目录一、浮点类型要点二、浮点型储存规律三、例题解释一、浮点类型要点常见浮点型:float(四字节)、double(八字节)浮点类型没有无符号类型,也就是说浮点型内存中一定有符号位与浮点型有关的操作不会发生整型提升(只在char与int之类的整型之间),但是要注意隐式类型转换浮点型数据不能作 == 或 != 比较,只可区间比较(解释在下文)二、浮点型储存规律通过例子了解浮点型与整型的差异:int main(){ int n = 9; float *pf = (float *)&a
2021-10-10 00:01:45
734
2
原创 C语言 深度解析数据在内存中的存储
目录检索文章摘要一、C语言的数据类型二、隐式类型转换1.什么是隐式类型转换2.==整型提升==3.类型转换三、机器大小端1.什么是大小端2.大小端在截断的应用3.判断当前机器的字节序是大端还是小端==四、整型在内存中的存储==1.原码、反码、补码==2.举例实践整型数据在内存的存储==五、浮点型在内存中的存储文章摘要本文通过内存底层原理,帮你透彻了解数据存储进内存与从内存中读取的区别以及不同数据类型下数据计算、赋值的变化情况要透彻理解这些,必须知道隐式类型转换以及机器大小端的概念,本文会对此做简单介绍
2021-09-27 19:54:29
494
5
原创 C语言实现三子棋、五子棋、扫雷游戏合集详解
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-06-23 00:04:38
704
原创 算法:二分查找(折半查找)
二分查找:在一个有序的序列中,找某个数据是否在该集合中,如果在打印该数据在集合中的下标,否则打印找不到具体找的方式:找到数组的中间位置检测中间位置的数据是否与要查找的数据key相等a: 相等,找到,打印下标,跳出循环b: key < arr[mid], 则key可能在arr[mid]的左半侧,继续到左半侧进行二分查找c: key > arr[mid], 则key可能在arr[mid]的右半侧,继续到右半侧进行二分查找如果找到返回下标,否则继续,直到区间中没有元素时,说明key
2021-05-19 13:30:03
1734
9
原创 算法:打印100~200之间的素数
素数:即质数,除了1和自己之外,再没有其他的约数,则该数据为素数,具体方式如下方法一:试除法int main(){ int i = 0; int count = 0; // 外层循环用来获取100~200之间的所有数据,100肯定不是素数,因此i从101开始 for (i = 101; i <= 200; i++) { //判断i是否为素数:用[2, i)之间的每个数据去被i除,只要有一个可以被整除,则不是素数 int j = 0; for (j = 2; j<i
2021-05-19 13:11:36
774
4
原创 C语言中一些易混淆忽视的知识点
C语言中一些易混淆忽视的知识点一、使用 VS2013 作为编译环境时需要注意的几点问题在 VS2013 中使用 scanf 输出函数时,编译会报错,提示我们使用scanf_s等相应的函数,虽然这种方法更有利于程序的安全,但很多时候很不方便,不利于代码的移植。我们可以采取更好的方法:1)添加预处理#pragma warning(disable:4996)忽视该警告2)添加预处理#define _CRT_SECURE_NO_WARNINGS一般情况使用 VS2013 编译运行C语言代码时,可
2021-05-15 00:54:29
1503
12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人