- 博客(16)
- 收藏
- 关注
原创 TCP/IP协议------IP首部
IP:TCP/IP协议族种最为核心的协议,所有的tcp,udp,icmp,igmp数据都是以IP数据报格式传输的。不可靠的,无连接的,无状态的。不可靠 : 不能保证IP数据报能成功到达目的地,仅提供最好的传输服务,当发生某路由器缓冲区暂时用完,错误处理算法将会丢弃该数据,发送ICMP消息报给信息源,任何要求的可靠性,必须由上层来提供。无连接 : IP并不维护任何关于后续数据报的状态信息,...
2019-09-24 11:57:03
443
原创 TCP与UDP协议,两者之间的区别。
TCP协议UDP协议两者之间的区别计算机网络各层协议:应用层:HTTP FTP DNS SMTP POP PING传输层:TCP UDP网络层: IP数据链路层: ARP RARP这里对传输层协议进行总结说明(一)TCP :面向连接的,可靠的字节流服务 , tcp服务器必须给每个连接分配资源,a.面向链接:先建立连接,才能收发数据,Connect...
2019-09-22 15:17:49
333
原创 C++和C之间的区别
C++和C语言之间存在多种不同点,这里对它们之间的不同点进行总结。const修饰的量引用与指针static关键字new与malloc(一) const修饰的量a. C中const修饰的量叫常变量,不是常量,不能被修改。不是必须初始化,但是如果不初始化,之后无法赋予合适的值,因此一般进行初始化。 例:const int a=10; int arr[a]={...
2019-09-07 21:02:43
715
原创 排序算法(2)-- 快速排序,冒泡排序
冒泡排序使我们开始最先接触到的一种排序算法,这里对其进行简单的说明以及现对于冒泡排序的一种改进算法快速排序,是在冒泡排序的基础上进行改进。冒泡排序快速排序...
2019-09-07 17:28:10
206
原创 面向对象的oop编程思想
面向对象的三大特征:封装 继承 多态将现实中的实体抽象化为ADT(抽象数据类型),抽象数据类型封装为类,其中类中的成员变量对应于属性,成员方法对应于行为,对类进行实例化为对象。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象封装:...
2019-08-02 11:55:21
1063
原创 数据结构基础--单链表
单链表:(一):单链表相关知识点理解单链表是一种链式存取的数据结构。用一组地址任意的存储单元存放线性表中的数据元素。 链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置)。其中元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。链表的具体存储表示为:① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是...
2019-08-01 17:24:10
191
原创 利用空间换时间减少时间复杂度以及以C语言字符串处理为例减少空间复杂度
字符串处理中,字符串的拷贝,连接,以及求其长度//1:删除多余空格,只保留一个空格void Blank1(char *str)//时间复杂度:O(n),空间复杂度:O(n){ int len=strlen(str); char *buf=(char*)malloc(sizeof(char)*(len+1)); //动态分配一个数组 int i=0; int j=0; while...
2019-07-06 09:53:52
773
原创 (c语言)类型转换
默认转换规则: 1.从窄的类型转成宽类型; 2.同类型的无符号比有符号宽(考的多) 3.整型起(数字默认为int,浮点默认为double) 只要是二进制左边补数据都是补符号位,无符号则补0,右边补数据都是补0窄类型转宽类型:左边统一补符号位,无符号则补0int main(){ char a = 10;//0000 1010 int b = a;//10,00000000...
2019-07-01 23:19:28
406
原创 编译链接过程分析
概述C语言代码为了能够在机器运行,在运行的前期会经历编译链接的过程。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可加载、可执行代码的过程。编译链接经历以下几个过程:A: 预处理预编译过程(文本处理):将编程好的 .c,.cpp 源程序文件预编译成 .i文件,主要处理源代文件码中出现以"#"开始的预...
2019-06-28 10:11:51
156
原创 函数的递归调用
·········· 递归的基本原理:1 每一次函数调用都会有一次返回.当程序流执行到某一级递归的结尾处时,它会转移到前一级递归继续执行.2 递归函数中,位于递归调用前的语句和各级被调函数具有相同的顺序.3 每一级的函数调用都有自己的私有变量.4 递归函数中,位于递归调用语句后的语句的执行顺序和各个被调用函数的顺序相反.5 虽然每一级递归有自己的变量,但是函数代码并不会得到复制.6 ...
2019-06-14 20:34:01
1064
原创 结构体大小的计算
在讨论结构体大小前,我们先看一个例子:struct B{ char a;//1个字节 int b;//4个字节};//5个字节int main(){ printf("%d\n",sizeof(B)); return 0;}按照内置类型的字节大小,该结构体的大小共为5个字节。这里输出该结构体字节大小编译器给出的字节数为8个字节。因为存在内存对齐的问题。内存对齐:在...
2019-05-30 16:25:52
903
原创 调用交换函数修改值常遇到的问题以及解决方法
通常我们在遇到简单问题的解决时,不可避免的会出现大大小小的问题。这里对于通过在A函数中调用B函数修改自己的值,需要通过传指针,解引用进行值的修改。可能出现以下几个问题:1:正常思维,直接进行值的交换。实参向形参传递参数,在B函数中交换值,但是A函数中实参的值并没有被修改。例如代码1。2:通过传指针解决,没有进行解引用。定义一个临时整型指针,通过其间接交换两者的值,同1 A函数中值没有修改。...
2019-05-06 20:55:36
372
原创 字符串拷贝的几种解决方法
字符串拷贝作为经常考到的内容,其有不同的解决方法。例如:将字符串str1中内容拷贝到str2中,可以通过循环结构将字符串str1中字符逐一拷 贝到str2中,当遇到’\0’时,跳出循环,即将src[i]!=’\0’作为判断条件注:这里的判断条件str[i]用到数组,也可以使用指针,通过解引用a: *[src+i]!=’\0’(for循环结构中的表达式)如上图所示,数组名sr...
2019-05-05 19:22:15
13133
2
原创 基于数字处理的几种问题的解决方法
在对前面学习的数字处理中,主要遇到以下三种问题:1:输出给定数字的位数;2:将给定数字按顺序输出;3:将给定数字逆序输出。解决:1:给定数字除以10,去掉个位,计数器加一,依次直到处于结果为02:按顺序输出。a:计算给定数字位数,目的以及关键点寻找与数字位数相同的取余整数例如:给定12345,与其位数相同的整数即为1000,只需要调用第一问的计算位数的函数。b:计算除余以及除以的数...
2019-04-13 18:12:20
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人