linux c
文章平均质量分 71
MAQI77
这个作者很懒,什么都没留下…
展开
-
数据结构第六天————图、以及算法
数据结构1. 逻辑思维 --> 编辑能力2. 封装接口3. 模块化编程 --> .h .c .c复习树二叉树二叉排序树 二叉搜索树特点:中序遍历的结果是从小到大有序。今天的内容1. 二叉树的层次遍历代码截图2. 图a. 概念:非线性结构,可能有环,可能是有方向的。b. 图的分类有向图和无向图 //连通图和非连通图c. 图的表示方式V={v0,v1,v2…}; //顶点R={<v0,v3><v0,v5>…} //有向图或者R=原创 2021-07-02 18:22:59 · 77 阅读 · 0 评论 -
数据结构第五天————项目(电子词典)
复习栈FILO顺序栈只能在一端操作的顺序表,建议在表尾进行入栈和出栈链式栈只能在一端操作的链表,建议在表头进行入栈和出栈队列FIFO顺序队列入队和出队分别在两端操作的顺序表顺序表:表头入队,需要移动元素;表尾出队,很方便。改进办法:方案1:空间只用一次,例如:讲义中二叉树的层次遍历struct queue{data_t data[SIZE];int rear; //表示入队的下标int front;//表示出队的下标};方案2:空间重复利用,即:循环顺序队列struct原创 2021-07-01 19:07:51 · 393 阅读 · 0 评论 -
数据结构第三天————栈,队列
单向循环链表特点:链表 + 尾结点指向头结点注意:在单向不循环链表的基础上修改判断尾结点的条件。 p->pNext == NULL ==> p->pNext == pList笔试题:合并两个已知尾结点的单向循环链表。LIST * mergeList(LIST *pT1,LIST * pT2){ if( NULL == pT1) { return pT2; } if( NULL == pT2) { return pT1; } if( NULL == pT原创 2021-07-01 19:00:40 · 88 阅读 · 0 评论 -
数据结构第二天————链表
复习数据结构逻辑结构–线性结构–顺序表+链表顺序表 (数组)应用特点地址连续 大小固定 紧凑存储 前驱 后继 访问方便删除和插入的时候,需要移动元素操作创建顺序表增加、插入删除查询修改销毁顺序表今天的内容链表==特点 ==地址可以不连续 大小不固定删除和插入的时候,不需要移动元素,比较方便访问不方便,只能从头结点开始访问术语单向链表中任意一个结点,只有一个指针域,存放下一个结点的地址。双向链表中任意一个结点,有两个指针域,分别存放下一个结点的地址和前一个结点原创 2021-07-01 18:57:38 · 78 阅读 · 0 评论 -
数据结构第一天——————顺序表
数据结构的课程安排1. 顺序表2. 链表3. 栈、队列4. 树、图5. 算法6. 项目数据结构培养的内容1. 习惯: 画图–>伪代码–>代码–>运行测试2. 思维: 逻辑思维 编程思想3. 能力: 封装接口 调用接口线性结构如果当前结点有前驱,那么,它的前驱有且仅有一个。如果当前结点有后继,那么,它的后继有且仅有一个。例:数组中有五个元素,现在找到了下标为2的那个元素前驱: 下标为2-1后继: 下标为2+1包含:顺序结构和链式结构顺序表特点 *****原创 2021-07-01 18:53:22 · 141 阅读 · 0 评论 -
进程第三天———进程间的通信方式
信号:同步:发送方发送数据,等待接受方响应之后才发下一个数据包的通讯方式异步:发送方发送数据,不等待接送方发回相应,接着发送下一个数据包的通讯方式1.特点:信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式2.基本概念:发送信号:产生信号的方式有很多种,(1).一个进程可以给一个进程发送一个特定信号, kill -9 进程ID号(2).内核可以向用户进程发送信号 管道断裂 alarm(2)(3).组合键ctrl + c— SIGINT ctrl+z ----SIGSTOP原创 2021-07-01 18:41:08 · 74 阅读 · 0 评论 -
进程第二天————进程的通信方式
进程:进程的概念特点进程类型:交互类型批处理进程守护进程进程状态运行态 :进程正在运行,或者准备运行(就绪态)等待态可中断不可中断停止态死亡态Here are the different values that the s, stat and state output specifiers (header “STAT” or “S”) willdisplay to describe the state of a process:D uninterruptible slee原创 2021-07-01 18:37:37 · 305 阅读 · 0 评论 -
进程第一天————进程
进程和线程进程process:概念、性质、分类、创建、退出、通信IPC、同步线程thread:概念、通信、同步semaphore和互斥mutex笔试和面试进程和线程概念、性质工作中进程和线程的通信、同步、互斥今天的内容进程process:进程的引进是为了实现并发任务。 == 概念:***** ==进程是程序运行的一次过程。进程是操作系统分配资源的最小单位。(内存资源)//进程是一段具有独立功能的程序在某个数据集合上的一次运行的过程。== 进程和程序的关系==1. 进程是动原创 2021-07-01 18:25:41 · 70 阅读 · 0 评论 -
第二天————文件IO
文件IO文件IO的特点:1.文件IO是POXIC(可移植操作系统接口)定义的一组函数2.不提供缓冲机制,每次读写都会引起系统调用3.文件描述符,是一个非负整数,文件描述符是0开始的标准IO默认打开3个文件stdin 标准输入 0stdout 标准输出 1stderr 标准出错 24.Linux下,标准IO基于文件IO实现文件的打开和关闭#include <sys/types.h>#include &原创 2021-06-19 16:25:59 · 155 阅读 · 0 评论 -
第一天————标准IO文件
IO文件为什么要学习IO公交车坠湖,飞机去哪里,黑匣子,黑匣子当中记录失事前所有的数据,数据: (1).疲劳驾驶(2).超速(3).叉车失灵等等.保存到硬盘当中.内存:一般掉电就消失了硬盘: 以文件的形式保存在硬盘中Linux一切皆文件:普通文件d 目录文件l 链接文件s socket文件p 管道文件c 字符设备文件b 块设备文件标准IO和文件IO区别:标准IO:1.标准IO是由ANSIC(ANSI美国国家标准协会及国际标原创 2021-06-19 15:49:26 · 78 阅读 · 0 评论 -
linux c第五天————c语言复习,结构体
C语言复习结构体:结构体类型定义学生: 属性:struct 结构体名{姓名: char name[20]; “字符串” 属性1;身高: int height; 整数 属性2;三门成绩: float scores[3]; 浮点数数组 属性3};定义一个学生的数据类型struct student{char name[20];int height;float scores[3];};表示定义了一个数据类型原创 2021-06-16 18:55:37 · 109 阅读 · 0 评论 -
linux c第四天———gcc、gdb、指针、大小端存储
1、gcc的编译流程1、预处理处理所有以#开头的指令,比如#include #define #ifdef。。。。。进行了符号替换gcc -E 1.c -o 1.i2、编译检查有无语法错误,如果没有语法错误,就编译为汇编代码,如果有语法错误,就报错gcc -S 1.c -o 1.s3、汇编将汇编代码变成二进制代码gcc -c 1.c -o 1.o4、链接一个工程中有很多.c文件,前面三步完成之后所有的.c都会变成.o,链接就是将所有的.o合并成一个可执行的二进制文件动态链接:在原创 2021-06-16 13:46:49 · 387 阅读 · 0 评论 -
linux c第三天———shell编程
shell编程1、shell脚本的概念编译型语言就是需要编译器进行编译之后,才能运行解释型的语言不需要编译,只要具有可执行的权限就可以运行shell脚本:将shell命令通过加入控制语句组织起来批量交给shell进行解释2、shell编程的基本过程3、shell变量3.1自定义变量1.变量的定义,通常用大写COUNT=12、调用echo COUNT或者COUNT 或者COUNT或者{COUNT}3、删除变量unset COUNT3.2位置变量(命令行参数)跟c语言中的原创 2021-06-11 18:09:26 · 145 阅读 · 0 评论 -
linux c第二天———shell命令
1、介绍shell1、什么是shellList item当用户在终端输入shell命令的时候,实际上是将这个命令交给了shell,然后shell告诉内核去执行对应的应用程序,所以shell是用户通过shell命令和内核进行交互的一个中间层当我们打开终端时,终端上打印出来的提示语句就是shell程序打印出来的,也就是当打开一个新的终端时,就会运行一个shell程序,我们用户就可以输入shell命令了所以:Shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统原创 2021-06-10 16:57:05 · 133 阅读 · 0 评论 -
linux c第一天————嵌入式,linux操作系统
嵌入式设备:通过软件来控制硬件工作的设备两类:有操作系统 没有操作系统(单片机开发)嵌入式为什么要学习linux操作系统?因为linux开源免费,可以对其进行修改,修改成适合不同的嵌入式设备的系统,可以定制,大部分嵌入式系统都使用的linux系统为什么linux系统使用命令行?定位不同,因为windows更多的是普通的家庭用户在使用,操作要傻瓜化,鼠标点点就可以,linux它的诞生之初是用来做企业服务器的,操作的都是专业人士,没有必须再安装桌面软件,浪费系统资源1、介绍linux操作系统1原创 2021-06-09 18:44:06 · 196 阅读 · 1 评论 -
第十天———清空函数和枚举
清空函数:memset---->按照字节进行清空建议:使用memset清空字符串头文件:#include <string.h>函数原型:void *memset(void *s, int c, size_t n);功能:用来清空一片空间参数:参数1:所需清空空间的起始地址参数2:所需清空的字符(0或者\0’)参数3:所需清空空间的字节数(可以通过sizeof这个运算符去测)返回值:清空空间之后的首地址==枚举:==是一个常量,和宏非常相像,但是枚举数据基本数据类型原创 2021-06-09 18:42:30 · 134 阅读 · 0 评论 -
第九天————传参问题和函数指针,指针函数
(1)一维数组的传参:void func(char *pStr);void func(char pStr[]);注意:数组作为参数传参时,会被退化成一个指针来使用。(2)二维数组的传参:void func(int M,int N,char (*pStr)[N]);void func(int M,int N,char pStr[][N]);(3)main函数传参:#include <stdio.h>23 int main(int argc,const char argv原创 2021-06-08 17:46:21 · 96 阅读 · 1 评论 -
第八天———函数;GDB调试段错误
段错误的原因:(1)访问了不该访问的空间(空指针或者野指针)(2)越界(3)修改了常量区的内容针对段错误处理方法:GDB调试:流程:(1)生成带有调试信息的文件gcc -g test.c -o test(2)进入该文件中gdb test(3)设置断点b 行号/函数名(4)让程序运行起来r(5)单步调试:n (不进入子函数,但是函数调用的整个结果会被显示出来)/ s (此时子函数会进入,进入子函数内部进行每一行单步调试)(6)如果看到(segementation def原创 2021-06-08 17:44:17 · 379 阅读 · 1 评论 -
第七天——指针和二维数组
打印数组元素值的方式:(一维数组)arr[i]*(arr+i)*(arr++) //errori[arr]*(p+i)*(p++)p[i]***1,指针和二维数组:***总结:对于int arr[2][3]的数组来说,arr[0][0]的类型是int ,arr[0]的类型是int *(因为arr[0] == &arr[0][0])又因为arr == &arr[0] ,为什么arr不是int **?(1)因为arr+1移动了12个字节(一维数组的的大小),如果是int原创 2021-06-03 18:33:58 · 119 阅读 · 0 评论 -
第六天————二级指针,选择排序
1,二级指针:二维数组?—》数组的数组二级指针?—》指针的指针概念:二级指针存储的是一级指针的地址(定义意味着有空间有空间就会有地址)格式:定义一级指针的格式:存储类型 数据类型 * 指针变量名; 定义二级指针的格式: 存储类型 数据类型 **指针变量名; 分析: 存储类型:二级指针自身的存储类型 数据类型**:二级指针的数据类型 数据类型*:二级指针所指向的类型 指针变量名:见名知义总结:(1)什么时候需要定义一个二级指针出来?-原创 2021-06-03 08:55:48 · 274 阅读 · 0 评论 -
第五天————数组,指针
数组整形数组:输入输出均需要通过循环来完成字符数组:本质就是一个字符串:通过整体去操作:gets,puts, scanf,printf字符串处理相关的函数:-----》注意:针对字符串来说strlen:strcpy:strncpy:strcat:strncat:strcmp:strncmp:memset:strlen:头文件:#include <string.h>函数原型:size_t strlen(const char *s);功能:求一个字符串的长度(注原创 2021-06-01 11:21:44 · 133 阅读 · 0 评论 -
第四天————1、循环 2、break,continue 3、数组 4、字符串处理相关的函数
1、循环2、break,continue3、数组(一维:整形 & 字符)4、字符串处理相关的函数循环:三大循环—》for while do_while当需要重复做某件事情时,需要通过循环来做!(1)for :格式:for(表达式1;表达式2;表达式3){循环体//代码的实现过程}分析: 表达式1:赋初值,可以省略(基于己经被初始化过了),但是;不可以省略 表达式2:条件判断,不建议省略,(省略之后就会陷入死循环) 表达式3:条件更新,可原创 2021-05-31 17:16:17 · 70 阅读 · 0 评论 -
第三天————运算符 ,输入输出函数 ,控住语句
1,运算符2,输入输出函数3,控住语句1,运算符包括:算术运算符,逻辑运算符,关系运算符,sizeof运算符,三目运算符,逗号运算符,位运算符,赋值运算符(1)算术运算符:+ - * / % ++ - -%:运算对象必须为整形++:规则:++在前,先自加(给旧值自加),再赋值(将自加之后的新值赋值给表达式)++在后,先赋值(将旧值赋值给表达式),再自加(给旧值自加)–:规则:–在前,先自减(给旧值自减),再赋值(将自减之后的新值赋值给表达式)–在后,先赋值(将旧值赋值给表达式),再原创 2021-05-27 18:18:06 · 104 阅读 · 0 评论 -
第二天————计算机的基本结构 ,程序 ,数据类型
1,计算机的基本结构2,什么是程序3,程序的设计步骤4,C库5,计算机的数据表示6,数据类型7,常量8,变量9,数据类型的转换1、计算机的基本结构(1)输入输出设备:键盘,鼠标,显示屏,扫描仪。。。。(2)CPU处理器:包含:算术逻辑运算器和控制器CPU处理器称为计算机的大脑,控制的是计算机的执行算术逻辑运算器:算术运算和逻辑运算,任何复杂的运算最终都会被展开成算术运算或者逻辑运算来执行控制器:对于内存中的命令的读取以及执行(3)存储器:外存:硬盘,存储的是程序以及一些不着急原创 2021-05-26 17:47:53 · 197 阅读 · 0 评论 -
第一天————linux命令,vim使用,gcc编译过程
第一天:(1)编程环境的介绍(2)基于Linux的shell命令(3)vim编辑器的使用(4)gcc编译器(1)编程环境的介绍虚拟机:虚拟出来的一台电脑。通过软件模拟出来的一台电脑(硬件环境),里面支持操作系统,硬盘以及内存,是一个可以运行的操作系统共享了真机的一部分硬盘和内存,在真机中运行的程序可以完全由虚拟机来运行。操作系统:Ubuntu系统(linux操作系统的发行版本)真机:操作系统:windows系统为什么使用Linux系统?-----》便于软件开发优点:(1)可.原创 2021-05-25 17:36:01 · 206 阅读 · 0 评论