- 博客(31)
- 收藏
- 关注
原创 2018.08.22
网络编程: linux下的四层网络模型应用层,传输层,网际层,网络接口层。各自的作用:网络接口层实现了网卡接口的网络驱动程序,以处理数据在网络媒介上(比如以太网)上的传输。不同的物理网络层具有不同的电器特性,网络驱动驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。网际层实现数据包的选路和转发。WAN通常使用众多分级的路由器来连接分散的主机或LAN,因此,通信的...
2018-08-22 19:27:28
114
原创 2018.08.20
线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,...
2018-08-22 10:21:37
110
原创 2018.08.21
。 多线程实现通信双方互发消息一个程序本身可以看做是一个进程,因而只需在程序内建立两个线程,用来接收和发送消息即可,退出时,可以通过一个线程控制另一个线程结束#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#inc...
2018-08-20 21:28:17
106
原创 2018.08.19
进程通信方式信号量:信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源.进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步二值信号灯:信号灯的值只能取0或1,类似于互斥锁。 但两者有不同:信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥锁更强调进程,占用资源的进程使用完资源后,必须由进程本...
2018-08-19 15:32:01
112
原创 2018.08.18
进程间通信共享内存: 是被多个进程共享的一部分物理内存.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容. 进程1:#include <stdio.h>#include <sys/ipc.h>#include <sys/shm.h>#inc...
2018-08-19 15:20:45
174
原创 2018.08.17
进程间通信:有名管道: FIFO,也称为命名管道,它是一种文件类型。1、特点 FIFO可以在无关的进程之间交换数据,与无名管道不同。 FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。 一旦创建了一个FIFO,就可用open打开它,一般的文件访问函数(close、read、write等)都可用于FIFO 代码:#include ...
2018-08-19 11:05:03
136
原创 2018.08.16
信号(signal)机制是Unix系统中最为古老的进程间通信机制,很多条件可以产生一个信号:1、当用户按某些按键时,产生信号2、硬件异常产生信号:除数为0、无效的存储访问等等。这些情况通常由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存储区的进程产生一个SIGSEGV信号3、进程用kill函数将信号发送给另一个进程4、用户可用kill命令将信...
2018-08-16 20:17:39
96
原创 2018.08.15
进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元; 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制进程是暂时的,程序使长久的:进程是一个状态变化的过程,程序可长久保存进程与程序组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)进程与程序的对应关系:通过...
2018-08-15 21:20:07
94
原创 2018.08.14
利用文件的操作,是否可以实现复制命令呢?当然是可以的。不停的将文件一中的字节数读出来放到文件2中,这样就能实现复制操作了。#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#...
2018-08-15 20:48:25
65
原创 2018.08.13
文件操作: 在Linux中对目录和设备的操作都等同于对文件的操作,都是使用文件描述符来进行的 。 Linux文件可分为:普通文件,目录文件,链接文件,设备文件 当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。 文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打...
2018-08-15 20:19:05
123
原创 2018.08.12
排序算法常见的有八种:算法一:插入排序插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法步骤:1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某...
2018-08-13 19:11:00
148
原创 2018.08.10
链式队列:链式队列与顺序队列有相似的地方,也有不同的地方。链式队列的初始化部分:struct node //这是结点的信息 { int data; struct node *next;};typedef struct node Node;struct queue ...
2018-08-10 20:42:35
98
原创 2018.08.09
用两个队列完成杨辉三角的输出:思路:队列一:0 1 0 队列二: 0 1 1 0 队列一中的元素,两个相连的进行相加就可以得到第下一行中的需要打印的元素,例如:第一行键盘输入0 1 0;第二行我需要打印 1 1, 1 1就可以通过(0+1)和(1+0)运算获得。但是我如果需要通过运算得到第三行的数据,我需要在第二行的1 1 的首...
2018-08-10 20:10:36
129
原创 2018.08.08
链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,需要为每个栈元素分配额外的指针空间用来存放指针域。头文件:#ifndef _SEQUENCE_H#define _SEQUENCE_H#define SUCCESS 10000#define FAILURE 10001#define TRUE ...
2018-08-08 20:58:46
110
原创 2018.08.07
双链表的建立,插入数据。分三个部分解读:头文件:#ifndef _Linklist1_H#define _Linklist1_H#define SUCCESS 10000#define FAILURE 10001#define TRUE 10004#define FALSE 10003typedef int ElemType;struct node {...
2018-08-07 20:29:20
81
原创 2018.08.06
单链表实现通讯录:头文件部分:#ifndef _LINKADDRESTLIST_H#define _LINKADDRESTLIST_H#define blue "\e[1;34m"#define yellow "\e[1;33m"#define red "\e[0;31m"#define cyan "\e[0;36m"#define purple "\e[0;35...
2018-08-06 20:53:10
109
1
原创 2018.08.05
单链表实现通讯录: #include <stdio.h>#include <stdlib.h>#include <string.h>#define blue "\e[1;34m"#define yellow "\e[1;33m"#define red "\e[0;31m"#define cyan "\e[0;36m&quo
2018-08-05 22:39:25
86
原创 2018.08.04
链表 :结点模型数据域 | 指针域数据域存放数据,指针域存放下一个节点的地址;头结点:不存放数据头指针:存放头结点地址的指针链表初始化:struct node{ int data; struct node *next;};typedef struct node Node; 头文件中:#ifndef _LINKLIST_...
2018-08-04 21:07:11
98
原创 2018.0803
顺序表的插入排序操作:#include "SEQUENCE.h" //主函数,先初始化,再插入#include <stdio.h>#include <stdlib.h>int input(){ int m; scanf("%d",&m); return m;}int main(){ sequ list; in...
2018-08-03 20:13:34
90
原创 2018.08.02
数据结构线性表特点:直接前驱;直接后驱;顺序表:长度(可变)容量(不可变)如何自己编写一个头文件:#ifndef SEQUENCE_H#define SEQUENCE_H //格式#define size 10#define SUCCESS 10000#define FAILURE 10001#define TRUE 10002#d...
2018-08-02 20:55:36
97
原创 2018.08.01
改良后的小通讯录:#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 1000#define blue "\e[1;34m" //设置字体颜色#define yellow "\e[1;33m"#define red "\e[0;31m"#de..
2018-08-01 20:47:00
86
原创 2018.07.31
链表部分:链表由一个个节点组成。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:数据域和指针域。数据域存放数据成员,指针域指向下一个节点地址。链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。单链表有一个头节点head,指向链表在内存的首地址。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为NU...
2018-07-31 21:52:28
134
原创 2018.07.30
通讯录小设计:实现 增删改查#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 1000#define blue "\e[1;34m"#define yellow "\e[1;33m"#define red "\e[0;31m"#define cy..
2018-07-30 19:56:16
110
1
原创 2018.07.29
结构体 struct 结构体名 { };#include <stdio.h>struct student { char name[20]; int age; char sex; int id;};int main(...
2018-07-29 20:15:27
83
原创 2018 07 28
题目: 请编写一个C函数,该函数将一个字符串逆序 #include <stdio.h> #include <string.h>#include <stdlib.h> //在子函数中设置数组存放形参的内容,由于子函数中是 ...
2018-07-28 21:18:33
108
原创 2018. 07.27
函数指针:指向函数的指针;格式:类型说明符(*指针变量名)()#include <stdio.h>void print(){ printf("helloworld\n");}int add(int x, int y){ return (x + y);}int main(){ void (*p)(); //函数指针 指向一个没有形参、没有返回值的...
2018-07-27 21:11:05
109
原创 2018.07.26
指针数组:char *ptr[] = {"I","love","china"};指针数组是一个数组,除了数组中的元素是指针外,和一般的数组没区别,数组名是个指针常量,不能进行指针运算,不过可以传递给桉树来进行。键盘输入多个字符串,可以用指针数组实现:#include <stdio.h>int main(){ char *str[100] = {0};...
2018-07-26 19:49:24
95
原创 2018.07.25
static作用:1、修饰全局变量,改变变量作用域,只能在当前文件被调用,其他文件不能调用 2、修饰函数的作用域,只能在当前文件中被调用 3、修饰局部变量,改变变量的生命周期,直到程序结束被释放,一般函数调用最后释放栈空间,被static修饰的局部变量,存放在数据段(静态数据区)头文件的" "于<...
2018-07-25 20:54:05
106
1
原创 2018 .07.24
数组字符串的练习:在字符串的指定位置插入一个字符:思路1:#include <stdio.h>#include <string.h>int main(){ char a[50] = {0}; char b[50] = {0}; //设置一个空数组用来存放新的字符串 char m; int i, j, n; printf("请输入一个字符...
2018-07-24 20:07:53
141
原创 2018.07.23
数组:int a[5];//5是数组长度;数组下标从0开始,到4;a[0]是数组的第一个元素;这里的数组是没有初始化的,没有初始化的数组 ,如果数组是局部变量,数组的值就是垃圾值,如果数组是全局变量,数组的值是0;/**********************************************/#include <stdio.h> int a[5]; /...
2018-07-23 20:22:44
129
1
原创 2018.07.22
今天复习整理了一下一周的课题笔记,练习了一下for循环,while循环。while循环有两种,当型循环与直到型循环。老师布置的一些作业自己尝试了一下。判断闰年求最小公倍数最大公约数显示200-300之间不能被3整除的数判断素数...
2018-07-22 21:13:59
121
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人