自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 输入系列函数scanf和输出系列函数printf和获取字符getc

当从一个文件中读取数据时,以读方式打开文件。当把一些数据写到文件时,以写方式打开文件。#include <stdio.h>FILE *fd = fopen("1.txt","r"); //读FILE *fd = fopen("1.txt","w"); //写int fgetc(FILE *stream);fgetc()函数从文件流里取出下一个字节并把这个字节作...

2019-08-21 16:27:58 306

原创 智能指针之auto_ptr

动态内存的使用很容易出现问题,因为确保在正确的时间释放内存是极其困难的。有时我们会忘记释放内存,在这种情况下就会产生内存泄漏;有时这块内存上还有其他指针指向他,我们就释放了它,在这种情况下会产生引用非法内存的指针。 内存泄漏是指堆内存的泄漏。堆,就是那些由 new 分配的内存块。栈上的内存管理方式:系统自动开辟 系统自动销毁堆上的内存管理方式:用户手动开辟...

2019-08-11 17:27:24 147

原创 linux中git的基本使用

工作区:实质就是一个文件夹。在工作区中创建或修改文件。版本库:就是执行git init后,在工作区中的那个隐藏文件.git。把暂存区中所有的文件一次commit后,全部放入版本库中。当我们执行git init后,Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。暂存区:存在版本库中。把工作区中修改后的文件先添加到暂存区。如果文件在工作区修改了,但没...

2019-08-10 21:51:08 167

原创 linux中文件的基本操作

目录的分类:/ :根目录/bin :存储系统所使用命令的可执行文件/home :普通用户家目录/dev :外部设备/proc :虚拟目录 以进程为单位存储内存的映射/mnt :临时挂载点/usr :第三方软件的一些文件/etc :系统配置目录/lib :库文件(静态库、共享库). :当前目录.. :上一级目录文件的属性:文件类型 文件权限 lin...

2019-07-20 21:20:09 135

原创 函数重载和函数的默认参数

函数重载:如果同一个作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。main函数不能重载。返回值不能用来判断函数是否重载。参数列表不同:参数的个数不同;参数的类型不同;参数的顺序不同;void print(int a);void print(double b);int print(int a,int b);重载和const形参:顶层const不影响传入函数的对象。...

2019-06-22 17:55:02 416

原创 const的使用和相关内容

const限定符:const定义的变量必须初始化,可以在运行时初始化也可以在编译时初始化。被const定义后的变量的值不能在被改变。const的引用:引用的类型必须与其所引用的类型一致。把引用绑定到const对象上,称为对常量的引用。对 const的引用 简称为“常量引用”。常量引用不能被用来修改它所绑定的对象。const int a = 10;const int &amp...

2019-06-21 15:43:34 134

原创 什么是引用?

类型有 基本数据类型 和 复合类型 ;基本数据类型,如int,char等基本数据类型;复合类型:指针 和 引用;引用:为对象起立另一个名字,引用类型引用另一种类型。引用并非对象,相反的,它只是为一个已存在的对象所起的另外一个名字。如图1-1。 图 1-1引用必须进行初始化,定义了一个引用之后,对其进行的所有操作...

2019-06-21 14:21:00 23533 1

原创 const加在指针前面和后面的区别

const在指针前面: 指针指向的内容不可修改,但是指针本身的内容可以修改。int a = 10;int b = 20;int const *pa = &a; *pa = 30; 是错误的pa = &b; 是对的const在指针后面: 指针本身的内容不能修改,但是指针指向的内容可以修改。int a = 10;int b = 20;in...

2019-05-16 16:34:44 3925

原创 int f(int x,int y) {return (x&y) + ((x^y)>>1);} 的结果为?

int f(int x,int y) { return (x&y) + ((x^y)>>1);}采用笨方法的话就是把 x和y 都转为二进制,然后逐个逐个的算出来。也可以用第二种方法算出来,其实 (x&y) + ((x^y)>>1) 就是求 x和y 的平均值的意思。证明一下 (x&y) + ((x^y)>>1)...

2019-05-04 17:49:02 2350

原创 数据库模式定义语言(DDL)和数据操纵语句(DML)

在linux虚拟机中,我们用service mysqld start命令来启动mysql服务。 启动mysql服务好之后,我们用mysql -u root -p命令来进入数据库。 然后输入你已经设置过的密码,如果还没有设置密码,就之间按回车键就可以进入数据库中了。 数据库中输入的命令要以 ";号 " 或 "\g "结束。数据库模式定义语言(DDL):数据定...

2019-04-30 15:58:40 2644

原创 linux中内核源码do_fork()的分析

一般进程的创建分为两步:fork() + exec() fork()通过拷贝当前进程创建一个子进程。子进程与父进程的区别仅仅在于PID、PPID和某些资源和统计量。 exec()函数负责读取可执行文件并将其载入地址空间开始运行。fork(),vfork(),__clone()根据各自需要的参数标志去调用clone()。然后由clone()去调用do_fork()。 当...

2019-04-26 16:52:16 315

原创 简单工厂模式

简单工厂模式: 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。工厂封装了对象的创建过程。简单工厂模式的两个重要的功能: (1)定义创建对象的接口,封装了对象的创建; (2)使得具体化类的工作延迟到了子类中。工厂类: 负责实现创建所有实例的内部逻辑。根据给定的参数创建对应的对象。抽象产品(抽象基类): 简单工厂模...

2019-03-29 22:15:56 97

原创 poll系统调用

poll系统调用的用途:与select类似,也是在指定时间内轮询一定数目的文件描述符,以测试其中是否有就绪的文件描述符。poll系统调用函数的定义如下:#include <poll.h>int poll(struct pollfd* fds, nfds_t nfds, int timeout)函数的作用是:此函数成功时,返回就绪文件描述符的总数,失败返回-1并设置er...

2019-03-28 22:41:04 623

原创 socket系统调用函数

UNIX/Linux的一个哲学是:所有东西都是文件,socket也是个文件,它是一个可读、可写、可关闭的文件描述符。socket基础API:socket的主要API都定义在sys/socket.h头文件中。创建socket:#include <sys/types.h>#include <sys/socket.h>int socket(int domin, ...

2019-03-27 23:16:57 693

原创 专用socket地址和通用socket地址

socket地址API:协议族 地址族 描述 地址值含义和长度PF_UNIX AF_UNIX UNIX本地域协议族 文件的路径名,长度可达到108字节PF_INET AF_INET TCP/IPV4协...

2019-03-27 22:47:57 493

原创 TCP连接的建立和断开过程中客户端和服务器的状态变化

TCP状态转移过程:TCP连接的建立和断开过程中客户端和服务器的状态变化: 服务器状态转移过程: 服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,listen系统调用创建了一个监听队列,用来存放待处理的客户连接。 服务器一旦监听到某个客户端连接请求(即收到同步报文段(...

2019-03-24 22:31:57 3697

原创 TCP头部结构

TCP头部结构:16号端口号:告知主机该TCP报文段是来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)的。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号。32位序号:一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系...

2019-03-24 22:13:26 128

原创 网络字节序和主机字节序

字节序分为:大端字节序 和 小端字节序大端字节序:指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处。小端字节序:指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。现代PC大多采用小端字节序,小端字节序又称为主机字节序。大端字节序也称为网络字节序。当格式化的数据在两台使用不同字节序的主机之间直接传递时,接收端必然会解释错误传递的数...

2019-03-24 15:07:22 141

原创 select系统调用

select 系统调用的用途是:在一段指定时间内,监听用户感兴趣的文件描述符上的可读事件、可写事件和异常事件。select系统调用的原型:int select ( int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout ); se...

2019-03-09 22:45:07 587

原创 常用遇到的进制转换问题

数据在计算机中主要是以补码的形式存储的。 二进制:二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。 八进制:八进制数据是用0到7八个数码来表示的数。它的基数为8,进制规则是“逢八进一”,借位规则是“借一当八”,其位权是以8为底的幂。 十进制:十进制数据是用0到9十个数码来表示的数。它的基数为10,进制规则是“逢十...

2019-03-06 23:20:04 520

原创 快速排序C语言递归代码实现

快速排序的思路: 假如对数组(arr[])进行排序,那么定义一个基准(datum)并把数组第一个数据赋给datum,定义两个下标(low 和 high)分别记录数组第一个数据下标和数据最后一个数据下标。首先,从数组arr[high]往前遍历,如果arr[high]中的数据比基准datum中的大,那么继续往前遍历(arr[high--])找到第一个数据比基准datum小的位置,并把arr[...

2019-03-06 23:18:54 5156 1

原创 冒泡排序算法

冒泡排序算法的思路是:    在一个待排序的序列中,(假如要求序列从左到右逐渐增大)那么判断待排序列中的一个位置中的大小和第二个位置中的大小,如果第一个位置中的数据比第二个位置中的数据大,那么把第一个位置中的数据和第二个位置中的数据进行交换,否则不用进行处理。再判断第二个位置中的数据和第三个位置中的大小,依次类推,直至把最大的数据放到最后面的位置。然后再从头开始把第二大的数据放到倒数第二个位置...

2019-02-20 22:49:04 129

原创 假设有两个按元素值递增有序排列的线性表 A 和 B,均以单链表作存储结构,请编写算 法将 A 表和 B 表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素) 排列的线性表 C,并要求

1.先定义一个结构体。typedef struct Node{ int data; struct Node*next;}Node,*List;2.给这个结构体初始化,即得到一个头结点void InitList(List plist){ assert(plist != NULL); plist-&gt;next = NULL;}3.用尾插法给两个单链表插入数据...

2018-11-13 15:01:41 18450 7

原创 Linux中有一个字母的颜色改变了,如何把这个字母改回原来的样子?的问题和 E325 : ATTENTION 问题。

1.假如在你编写的文本中的某一个字母的颜色改变了:那么你直接在这个文件的命令模式下输入“:nohl”,再按回车即可取消高亮;2.假如你打开一个文件时出现如下图这样的页面:那么你可以进行下图的操作:在你当前的文件夹中 su 进入root模式,输入你的密码,然后用ls -a的命令查看你当前文件夹里的文件,然后找到一个".你的那个文件.swp"(即图中画红线的那个文件),最后...

2018-10-25 21:30:51 675

原创 linux中的一些常用操作和vi的使用

linux的基本操作:1.进入linux操作系统后鼠标右键选择open in terminal 打开终端,可以看到如下画面。2.放大(缩小)终端的的快捷键:"ctrl" + "shift" + “+”  、 “ctrl" + "-"。3.切换目录:cd ~ (切换到个人家目录)                       cd 空格 文件夹 (跳到下一个文件夹)4.查看当前...

2018-10-22 17:18:45 179

原创 查找关键字的函数的编程范式

一、编程范式。在编写一个查找关键字的函数时,我们会考虑到所要查找的关键字的类型是什么,在什么类型的数据里面查找,以及这个数据的长度等信息。例如:在一个 len 大小的 数组 中查找一个 整型关键字 。int *Search_int(int *arr,int len,int key){ for(int i=0;i&lt;len;i++) { if(arr[i] == key)...

2018-09-25 21:19:11 372

原创 Swap函数的泛型编程

一、泛型编程。当我们想要用用一个函数对两个变量进行交换时,不能单纯的把实参传递给形参,而是要传递实参的地址,然后去内存中找到这个地址,并访问地址中的值,然后再对这两个地址中的值进行交换。例如:这个函数是不可以交换的。void Swap(int a, int b){ int tmp = a; a = b; b = tmp;}例如:这个函数是可以交换的。...

2018-09-25 14:33:33 450

原创 编写一个简Myprintf函数,它能够处理%d,%f,%s和%c格式化。其他格式码的行为是未定义的。你可以假定已经存在函数printf_integer和printf_float,用于打印这些类型的值。

一 、第一种方法先编写一个printfint函数,用来输出整数值。函数使用了递归调用的,先得到首位整数数值,并输出;再得到中间整数数值,并输出;最后得到末尾整数数值,并输出。 void printfint(int num){ if(num == 0) return ; printfint(num /10); putchar(num % 10 + '0');} ...

2018-09-18 19:59:29 725

原创 指针 + 数字 和 指针 - 指针的一些问题

在进行指针相减或指针加数字时需要进行一些调整。指针变量(指针)中存放的是地址。指针 + 数字:指针加法需要调整,调整的权重为指针本身去掉一个*号,求sizeof。如下图.1指针 - 数字:指针加法需要调整,调整的权重为指针本身去掉一个*号,求sizeof。如下图.1举例:int *p;p+2的值为p的值加上2*sizeof(int)个字节。#include<stdio....

2018-07-31 18:24:21 1354 1

原创 假设在n进制下,下面的等式成立,567*456=150216,n的值是?

假设在n进制下,下面的等式成立,567*456 = 150216,n的值为:A . 9    B.    10    C .    12   D.      18答案是D 18进制。解:注:n^2表示为n的平方。首先先看等式左边中第一项 的个位数上的值 * 第二项的个位数上的值 = (1)把两边都成n进制权重相加的形式,即等式可变为: (5*n^2+6*n^1+7*n^...

2018-07-31 17:07:18 438

原创 数组中指针p++

     在定义一个整型数组时,系统会给数组分配一个(数据类型 * 数组长度)个字节存储单元;数组中的数据是以十六进制存放的;其中pc 小端:低地址存放小数据,高地址存放大数据;一个整型数组的一个存储单元格是四个字节,三十二位比特,图中一个大的蓝色格子有四个小格子,则第二个格子的地址为101,第三个格子的地址为102,第四个格子的地址为103例如:假设100是地址,则它的十...

2018-07-31 15:50:04 3362

原创 关于变量值交换的问题

    我们在定义变量时,系统会给所定义的这变量分配一个存储单元。但我们在主函数中给两个定义好的变量交换值时,如果是通过另外一个函数对这两个变量进行交换是不能实现的,因为没有更改这两个变量存储单元中的值。 例如:左边图中的代码在函数中看是进行交换了,但实际上却没有进行交换,存储单元中的值还是没有改变。      如果我们要对两个数进行真正上的交换,即存储单元中的值的交换,那...

2018-07-21 21:20:43 215

原创 关于数组越界问题

    在使用数组中我们可能会有出现数组越界的情况,数组越界是什么原因造成的呢?    什么是数组访问越界? 我们通过数组的下标来得到数组内指定索引的元素。这称作对数组的访问。 如果一个数组定义为有n个元素,那么,对这n个元素(下标为0 到 n-一的元素)的访问都合法,如果对这n个元素之外的访问,就是非法的,称为“越界。 数组占用了一段连续的内存空间。然后,我们可以通过指定数组下标来访问这块内...

2018-07-20 14:46:45 5356

原创 C语言的基本数据类型

    我们在C语言中常常使用的数据类型有:char  字符型    一个字节;short  短整型    两个字节;int 整型   四个字节;long int 长整型  (VS 2012中)四个字节;long long int 长长整型  (VS 2012中)八个字节;float 单精度浮点型    四个字节;double  双精度浮点型    八个字节;其中char类型是一个迷你整型,即ch...

2018-07-15 17:12:01 149

空空如也

空空如也

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

TA关注的人

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