摘要: 数组可以作为形式参数使用 数组做形式参数的时候真正的形式参数并 不是数组而是一个可以作为数组使用的 变量 数组形式参数里包含的存储区都不是被调用 函数提供的 声明数组形式参数的时候可以省略中括号 里的整数 使用数组形式参数的时候必须配合一个整数 类型的形式参数,这个参数用来表示 数组里的存储区个数 数组形式参数可以让被调用函数使用其他函数 的存储区... 阅读全文
posted @ 2017-10-26 09:07 Kernel001 阅读(196) 评论(0) 推荐(0) 编辑
摘要: C语言里可以采用分组的方式管理语句 每个语句分组叫做一个函数 多函数程序执行的时候时间分配情况必须 遵守以下规则 1.整个程序的执行时间被划分成几段,每段 时间都被分配给一个函数使用 2.不同时间段不能互相重叠并且所有时间段 必须连续 3.如果函数A在工作的时候把一段时间分配给 函数B使用则函数B结束所有工作之后必须 把后面的时间还给函数A 如果函数A... 阅读全文
posted @ 2017-10-26 09:05 Kernel001 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 数组名称不可以代表存储区 数组名称可以代表数组里第一个存储区的地址 可以对数组名称进行sizeof计算,结果是 数组里所有存储区的总大小 C99规范里可以使用变长数组 声明变长数组的时候可以用变量表示数组里 的存储区个数 某一次程序执行过程中变长数组里存储区 个数不会变化 如果程序会多次执行则每次执行的时候数组 里包含的存储区个数可能不同 变长数组不可以初始化... 阅读全文
posted @ 2017-10-26 09:04 Kernel001 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 无法预知的数字叫随机数 rand标准函数可以用来获得随机数 为了使用这个标准函数需要包含stdlib.h头文件 srand标准函数用来设置随机数种子 这个函数把一个整数作为种子使用 不同的种子产生的随机数不同 为了使用这个标准函数也需要包含stdlib.h头 文件 time标准函数可以用来获得当前时间 这个函数用一个整数表示当前的时间 同一秒之内这个用来代表时间的整数是同一个 为了使用... 阅读全文
posted @ 2017-10-26 09:03 Kernel001 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 如果表达式里包含多个不同类型的数字就必须 首先把它们转换成同一个类型然后才能 计算 这个转换过程叫做隐式类型转换,完全由 计算机完成 隐式类型转换过程中一定把占地小的类型转换 成占地大的类型 如果不同类型存储区大小一样就把整数类型转换 成浮点类型,把有符号类型转换成无符号 类型 C语言里可以临时给一个数字指定一个类型, 这叫做强制类型转... 阅读全文
posted @ 2017-10-26 09:01 Kernel001 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 把二进制表示的数字从右向左每三个数位分成 一组,每组用一个0到7之间的数字替换。 这个替换结果叫做数字的八进制表示方式 0110 1010 01 101 010 152(八进制) 可以直接在程序里用八进制方式表示数字, 这种数字必须以0做开头 可以采用%o做占位符把数字的八进制表示 方式显示在屏幕上 把二进制数字从右向左每四个数位分成一组,... 阅读全文
posted @ 2017-10-26 08:57 Kernel001 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 字符类型的名称是char 字符类型里包含256个不同的整数,每个 整数对应一个字符(例如'a', '^'等) 这些整数和字符完全可以互相替代 ASCII码表列出所有整数和字符的对应关系 'a' 97 'A' 65 '0' 48 ASCII码表里所有小写英文字母是连续排列的, 其中'a'对应的整数最小,'z'对应的整数 ... 阅读全文
posted @ 2017-10-26 08:56 Kernel001 阅读(581) 评论(0) 推荐(0) 编辑
摘要: C语言里包含以.c作为扩展名的文件,这种 文件叫源文件。C语言程序的绝大部分内容 应该记录在源文件里。 C语言里还包括以.h作为扩展名的文件,这种 文件叫头文件. C语言程序里可以直接使用数字和加减乘除 四则运算符号(*代表乘法,/代表除法) 所有计算步骤都必须用分号做结尾,每个用 分号结束的计算步骤叫做一条语句 C语言程序里的绝大多数语句应该包含在 ... 阅读全文
posted @ 2017-10-26 08:54 Kernel001 阅读(2360) 评论(0) 推荐(0) 编辑
摘要: Linux是一个和Windows类似的操作系统 通常通过终端软件使用Linux操作系统 终端软件里只能使用键盘不能使用鼠标 可以在终端软件里输入各种命令控制计算机 完成各种任务 clear命令可以清除终端窗口里的所有文字 操作系统里用来管理文件的部分叫文件系统 所有文件系统都采用分组的方式管理文件, 一个分组里可以包含任意多个文件 每个分组里的文件都可以再次分组 文... 阅读全文
posted @ 2017-10-26 08:53 Kernel001 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 一、线程同步 条件变量 什么是条件变量? 线程A等待某个条件成立,条件成立,线程A才继续向下执行。线程B的执行使条件成立,条件成立以后唤醒线程A,以继续执行。这个条件就是条件变量。 pthread_cond_t 类型 就是条件变量的类型 对类型的封装如下: #include //条件变量的静态初始化 pthread_cond_t cond = PTHREAD_COND_INITIALI... 阅读全文
posted @ 2017-10-25 21:59 Kernel001 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 一、基于UDP的网络编程模型 服务器端 1、创建socket. 2、将fd和服务器的ip地址和端口号绑定 3、recvfrom阻塞等待接收客户端数据 4、业务处理 5、响应客户端 客户端: 1、创建socket 2、向服务器发送数据sendto 3、阻塞等待服务器的响应信息 4、处理响应信息 5、断开通讯 #include #include ssize_t recvfrom(int s... 阅读全文
posted @ 2017-10-25 21:58 Kernel001 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 一、基于TCP传输层的编程模型 TCP是面向连接的,安全可靠的。 三次握手 服务器端编程模型 1、创建一个用于网络通讯的设备 通讯端点 socket(2) #include #include int socket(int domain, int type, int protocol); 功能:创建一个用于通讯的端点 参数: domain: AF_INET:应用于IPV4地址家族的 AF_I... 阅读全文
posted @ 2017-10-25 21:57 Kernel001 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 一、共享内存 1、获取一个键值 ftok(3) 2、使用键值获取共享内存的id shmget(2) #include #include int shmget(key_t key, size_t size, int shmflg); 功能:分配一块共享内存段。获取和key值相关的共享内存段的id。 参数: key:ftok(3)的返回值 size:指定了共享内存段的尺寸 shmflg:... 阅读全文
posted @ 2017-10-25 21:56 Kernel001 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 一、pause(2)的使用 #include int pause(void); 功能:等待信号的到来 返回值: -1 错误 errno被设置 只有在信号处理函数执行完毕的时候才返回。 利用所学的知识,编码实现sleep函数的功能。 unsigned int psleep(unsigned int seconds); 代码参见 psleep.c 二、信号从产生到处理的全过程 1、... 阅读全文
posted @ 2017-10-25 21:55 Kernel001 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 一、管道 管道分为两种: 无名管道 有名管道 无名管道用于具有亲缘关系的进程间通讯。无名管道是单工的。 有内核管理的一块内存空间。 使用管道,系统提供了pipe(2) #include int pipe(int pipefd[2]); 功能:创建管道 参数: pipefd[2]:用于返回管道的两端。pipefd[0]指向管道的读端。 pipefd[1]指向管道的写端。 返回值: 0... 阅读全文
posted @ 2017-10-25 21:52 Kernel001 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 一、环境变量 bash下的环境变量。 每个进程都默认从父进程继承环境变量 bash本身就是一个程序,这个程序运行的时候,bash进程 可以定义只能之自己这个进程中使用的变量,这种变量称为自定义变量。 用户可以使用 export 环境变量的名字 将自定义变量变为环境变量。环境变量可以被子进程继承。 如何使用程序访问环境变量? 系统维护着一个全局变量 extern char **environ... 阅读全文
posted @ 2017-10-25 21:51 Kernel001 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 进程的管理 一、进程的基础 进程和程序的区别 每个进程有自己的pid、PCB 操作系统上运行的所有进程构成一颗树。 如何查看这颗树? pstree(1) 树根进程是init pid是 1 进程间的亲缘关系两种 父子关系 兄弟关系 使用top(1)命令观察进程的状态 使用ps(1)命令也可以查看进程。 二、进程的创建 父进程创建子进程 父进程如何去创建子进程? 父进程调用fork... 阅读全文
posted @ 2017-10-25 21:50 Kernel001 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 一、获取文件的元数据(meta data) 通过read write可以对文件的内容进行读写。 但是今天我们要操作的是文件的元数据(文件的属性信息) day08$ls -l hello -rw-rw-r-- 1 tarena tarena 0 8月 9 09:17 hello 文件的类型 文件的权限 文件的硬链接数 属主 属组 文件的大小 时间 文件的链接 分为两种 硬链接和软链接 每... 阅读全文
posted @ 2017-10-25 21:49 Kernel001 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 一、lseek(2)重新定位文件的读写位置。 #include #include off_t lseek(int fd, off_t offset, int whence); 功能:重新定位文件读写位置距离文件起始的偏移 参数: fd:指定了具体的文件 offset:偏移 whence: SEEK_SET:offset就是文件的偏移位置 指向文件的头部 SEEK_CUR:代表当前位... 阅读全文
posted @ 2017-10-25 21:47 Kernel001 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 一、malloc的实现机制(缓冲机制) 库函数跟系统调用之间的关系 什么是缓冲? 内存分配的原理。 封装 函数A的实现代码中调用了函数B。函数B的功能是函数A主要的功能,这样就说函数A封装了函数B。 举例说明 malloc的实现机制(缓冲) 代码参见malloc.c 080f8-08119 33块 内存管理结束了 二、文件的操作(文件内容的操作) 文件的打开、关闭、读、写、读... 阅读全文
posted @ 2017-10-25 21:46 Kernel001 阅读(422) 评论(0) 推荐(0) 编辑