![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c基础学习
文章平均质量分 60
顾鸣丰
这个作者很懒,什么都没留下…
展开
-
linux C学习第五天
今天对变量和常量进行了区分和深入的了解一、变量1、什么是变量程序中用一个字符来表示一段内存,因此对于内存的操作就是对这个符号的操作。而变量就是这个符号和4字节的空间。(变量是一个整体,符号和空间都是变量的一部分)2、变量的组成(1)内存空间:存放数据的地方(2)变量名:用于方便对内存的操作(3)变量地址(编号):区分变量的在内存中的位置,以开头第一个字节的地址为变量地址(4)变量类...原创 2018-11-16 11:35:36 · 136 阅读 · 0 评论 -
系统编程第一天
一、open函数可以使用man 2 查看open的使用方法,头文件等一些内容1、opens所包含的头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>2、open的格式int open(const char *pathname, int flags);int open(c...原创 2018-12-20 20:45:27 · 97 阅读 · 0 评论 -
C语言复习之路(指针,数组)14/15号一起了
数组、指针一、数组与指针(个人认为)什么是数组?我认为:数组就是一个容器,用来存放各种类型的数据。书上说什么是指针?我认为:指针也是一种变量类型,只不过它存放的数据是地址,而我们正好可以通过这个地址去找到这个地址所对应的内存空间。通过*号,可以改变那块空间中的值。书上说:数组和指针有什么关系?我认为:由于数组可以存放各种类型的数据,因此也能存放指针。(指针数组)指针中存放...原创 2018-12-15 21:36:03 · 140 阅读 · 0 评论 -
进程间通信(2)
一、消息队列unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式。进程可以向其中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。消息队列分两种:POSIX消息队列以及系统V消息队列 系统V消息队列目前...原创 2018-12-26 23:54:16 · 82 阅读 · 0 评论 -
数据结构第五天
一、双向链表1、单链表构成的循环链表最后一个结点本来指向NULL,改为指向头结点或者第一个结点。实现方法,将原来指向NULL的地方改成指向ls->head,或者ls->head->next。While()循环的条件改为!= ls->head或者ls->head->next。#include "Linklist.h"#include <stdl...原创 2018-12-10 22:21:15 · 105 阅读 · 0 评论 -
系统编程第二天
一、write实时检测文件的命令:tailf文件关闭后,再次开启每次默认从文件开头开始00头文件#include <unistd.h>格式ssize_t write(int fd, const void *buf, size_t count);;第一个参数:写的文件的文件描述符第二个参数:存放在缓冲区的要写入的数据第三个参数:想要写的大小(字节)返回值成功:返回实...原创 2018-12-21 22:27:00 · 124 阅读 · 0 评论 -
指针数组与数组指针复习
4.指针数组与数组指针指针数组:int a[10][]优先级比高,代表数组中存放10个int *类型的元素。本质上他是一个数组,因此为为指针数组数组指针:int (a)[10]夹上括号后a构成一个指针定义,指针变量名为a,int修饰的是数组中存放的元素类型此处的数组没有名字(匿名数组)。因此a是一个指针,指向数组的首地址。数组指针原本的形式是 int (*)[10] a由于不好...原创 2018-12-17 13:26:57 · 83 阅读 · 0 评论 -
线程
一、线程1、什么是线程1、线程:是CPU调度的基本单元进程:是可独立的运行模块线程依赖于进程,不能独立存在线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属于一个进程的其他的线程共享进程拥有的全部资源。2、刚启动运行的线程称为主线程,其他创建的线程乘为其他线程对于线程而言,多个线程没有地址空间,共享进程地址空间2、线程与...原创 2018-12-27 19:25:20 · 173 阅读 · 0 评论 -
数据结构第六天
一、栈1、入栈出栈顺序:先进后出,后进先出2、栈按分布不同分为(1)顺序栈(2)链式栈二、队列1、队列与栈的区别在于:栈是先进后出,后进先出。而队列是先进先出,后进后出。将栈看作瓶子装水和倒水的话,可以将队列看作水龙头,先进的先出。2、队列按分布不同分为(1)链式队列三、多项式计算器#include <stdio.h>#include "stack.h"...原创 2018-12-11 20:13:19 · 92 阅读 · 0 评论 -
数据结构(树)
树树是一种非线性的数据结构根节点:没有父结点的结点叶节点:没有结节点的节点,度为0的结点分支节点:有结点的节点,度非0的结点子节点父节点树的度:所有结点中度的最大值树的高度 = 树的层次二叉树二叉树树的度最大为2的树满二叉树:所有结点度为2完全二叉树:允许缺结点,按顺序去(最后往前删)性质1:在二叉树的第n层最多有2^(n-1)个结点点性质2:高度为k的二叉树最多...原创 2018-12-18 20:42:11 · 100 阅读 · 0 评论 -
排序
各种排序1、冒泡排序将数组的中的么一个数从头开始比较,找出最大的数,通过不断的交换,将最大数放入数组末尾。将长度减少,再次遍历,直到数组填完。2、冒泡排序——鸡尾酒排序又称定向冒泡排序。与冒泡排序的区别在于:冒泡只从低到高去比较,鸡尾酒排序不仅从低到高还从高到低去比较3、选择排序通过遍历,找到最小的数,将其放在数组开头。再从第二的位置开始遍历,找出第二小的数,放在数组第二个位置,直...原创 2018-12-18 20:48:50 · 58 阅读 · 0 评论 -
数据库
一、数据库的安装1、将压缩包sqlite-autoconf-3071700解压2、进入文件夹,运行configure等待下载完成3、下载完成后输入make指令,等待4、make install,等待结束5、找到/usr/lib目录下中的libsqlite3.so.0.8.6和libsqlite3.so.0文件,将其改名并将/usr/local中的对应libsqlite3.so.0.8.6...原创 2019-01-03 18:38:02 · 91 阅读 · 0 评论 -
进程控制
一、进程1、什么是进程:运行起来的进程。进程是一个具有一定独立功能的程序的一次运行活动进程是一个程序正在执行的实例。每个这样的实例都有自己的地址空间和执行状态。2、怎么区分进程:给每个进程分进程号pid。每个进程都有一个ID(ID是一个正整数),唯一标识了系统中的这个进程。每个进程都有一个创建它的进程,叫父进程(Parent Process)进程ID(PID):标识进程的唯一数字父进程...原创 2018-12-24 21:13:27 · 80 阅读 · 0 评论 -
线程同步
1、互斥量1、什么是互斥量互斥量(mutex)从概念上来说类似于一个二进制信号量,即初始值为1的信号量。互斥量被获取之后就不能再被获取,因此对互斥体的获取和释放操作常常称为加锁和解锁操作。互斥量只能由获取它的线程进行释放,如果违反这一原则,则结果是未定义的。互斥量从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥...原创 2018-12-29 23:40:26 · 195 阅读 · 0 评论 -
数据结构第一天
一、数据结构的组织形式1、线性表:除去头和尾,中间元素有且仅有一个前继,有且仅有一个后继。2、按存储空间分(1)顺序表:内部存储空间连续近似可以看成数组(2)链表:内部存储空间不连续。3、顺序表内容(1)头文件,存放在include 文件夹中#ifndef _SQE_H_#define _SQE_H_#define IN_SIZE 10 //初始最大的空间#define A...原创 2018-12-06 22:59:44 · 306 阅读 · 0 评论 -
linuxC学习第二十五天
一、关键字(32个)只说明部分1、auto自动声明变量,缺省时编译器默认是auto。2、register请求编译器尽可能的将变量存在CPU的内部寄存器中。通过这种方式可以尽可能的提高效率。要注意的是,内部寄存器有限,不能全部放入寄存器中,因此只是尽可能的存放CPU的内部寄存器中3、static修饰静态变量(全局变量,局部变量)———> 静态变量存放在内存的数据区(1)修饰局...原创 2018-12-05 21:24:36 · 87 阅读 · 0 评论 -
数据结构第二天
一、对数据结构进行深入学习1、顺序表加入按顺序查找// 删除数据:根据数值删除数据// s :要删除的顺序表// data: 要删除的数据// 返回值:成功返回 TRUE,失败返回FALSE,其他返回ERRORBOOL Delete_data(Sqe* s,Data data);BOOL Delete_data(Sqe* s,Data data){ if(NULL == ...原创 2018-12-08 09:21:49 · 91 阅读 · 0 评论 -
linuxC学习第十天
一、指针1、指针指向的是地址,指针=地址。2、指针的长度是固定不变的,指针空间多大取决于地址长度3、定义指针变量:前面加*表示指针在前面加指向空间的数据类型如:int *pa =&a,是说pa指向a的地址,a的数据类型是int4、指针变量中存的是地址5、指针运算(一般只做加减法),指针的加减和类型有关,加减的单位是类型字节的大小。注:指针有指针的算法,数字有数字的算法不能混为一...原创 2018-11-20 23:19:14 · 79 阅读 · 0 评论 -
liunx学习第四天
今天同样是学习liunx中gcc的编译以及c语言一些重点需要明白的基础问题。一、gcc指令的使用1、语言的发展由二进制语言(机器语言)——汇编语言(用符号表示一组操作)——自然语言(以语句为单位进行一组操作)——…2、C语言属于说明语言C语言是一种中级语言,它具备汇编的特性(直接操作硬件速度快)同时也具备高级语言的特性(可移植性)3、计算机识别的语言首先要了解计算机唯一可以识别的是机...原创 2018-11-15 12:16:47 · 85 阅读 · 0 评论 -
linuxC学习第九天
一、优先级与结合性的区分1、优先级:相当于对运算符的权限进行了排列,优先级高的先运算,逗号操作符具有最低的优先级。2、结合性:是优先级的辅助手段,在优先级相同的情况下的计算顺序。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。二、类型转换1、强制转换:在变量前使用(数据类型)进行强转2、隐式转换:系统自带的转换系统,在内部自动转换注:...原创 2018-11-19 22:59:59 · 1553 阅读 · 0 评论 -
linuxC学习第十二天
今天对多维数组和字符数组进行了学习;一、二维数组1、二维数组说的是二维但在内存中的本质还是一维数组,只是在这个一维数组中每一个元素存的是数组。2、二维数组的形式:a[m][n],3、一个二维数组int a[m][n],它的函数名可以表示成这样:a=int (*pa)[n];a[m]=&amp;a[m][0]4、对于二维数组a[m][n]用作坐标轴的时候m是对应y轴,n是对应x轴二、字...原创 2018-11-22 23:06:45 · 73 阅读 · 0 评论 -
llinux学习第一天
今天是学习嵌入式的第一天,首先了解了嵌入式是指在专用硬件上写软件,是间于软件与硬件之间的一种操作系统。再次明白嵌入式可以运用计算机,自动化,电子,通信等方面。然后下载学习一些运用于linux学习的软件工具,如下:一、软件工具1、onenote2016:用于课堂笔记2.、飞秋:聊天软件,传输数据较快3、everything:搜索工具,能快捷的找到电脑中的文件4、VM12:虚拟硬件,创建一个...原创 2018-11-11 19:00:58 · 133 阅读 · 0 评论 -
linux学习第二天
今天进一步加深学习了对liunx系统的一些简单指令,一些文件的说明,,一些便利的快捷指令。一、系统命令1、切换目录命令 cd :类似于windows系统中进入退出文件夹,例如cd /home/text是指进入到text目录中,cd …为退到上一级目录中。2、查看目录内容 ls:ls有很多的用法例如ls -a是查看隐藏文件,ls -l是查看文件详细信息,ll是查看隐藏文件和详细信息。3、查看...原创 2018-11-13 13:20:13 · 108 阅读 · 0 评论 -
linux学习第三天
今天对liunx如何对文件重定向和vim的使用进行了一定的学习了解一、文件重定向1、简单介绍首先要知道liunx中文件有三种方式,标准输入,标准输出,标准错误,以及对应的文件描述符。(liunx中的重要思想:一切皆文件)文件解释文件描述符标准输入从键盘中获取数据0标准输出在屏幕上打印正确的数据1标准错误在屏幕上打印错误提示22、如何文件重...原创 2018-11-14 10:05:44 · 106 阅读 · 0 评论 -
linuxC学习第十六天
今天主要了解了一下字符串处理函数。一、gets1、gets与scanf的区别,可以读空格。但是gets本身不安全,可能会导致数组越界,一般不使用。2、使用gets要带<string.h>头文件。二、fgets1、fgets是stdio.h中的函数,可以读取空格,换行。当数组大小不够时会自动截断,保留一个字符位给’\0’用2、fgeets的格式,fgets(str,10,st...原创 2018-11-26 23:33:40 · 210 阅读 · 0 评论 -
linuxC学习第二十三天
一、gdb调试1、运用gdb调试的目标文件在编译是时候要加上 -g (Debug版本)2、使用方法:gdb 要调试的文件3、在gdb调试过程中使用的代码功能指令查看程序清单list 缩写 l程序运行run 缩写 r设置断点break 缩写 b打印值printf 缩写 p(在程序运行中才能打印)继续运行continue 缩写 c查...原创 2018-12-04 21:56:07 · 103 阅读 · 0 评论 -
linuxC学习第二十四天
一、自动编译1、创建文件名叫makefile 或者MAKEFILE文件2、makefile文件书写规则(1)目标文件:依赖文件(一个tab键,不能用空格代替)命令代码使用方法:在终端敲make3、目标文件:最终要生成的文件依赖文件:为了生成目标文件所需要的文件命令:通过依赖文件生成目标文件的方法4、伪目标文件(不生成目标文件)已删除为例clean:(一个tab键,不能用空格...原创 2018-12-04 22:18:16 · 117 阅读 · 0 评论 -
linuxC学习十七天
今天对结构体进行了认识,以及一些结构体的注意点一、结构体1、基础解释1、结构体是复合数据,内部存储不同的类型2、结构体是用struct(关键字) student(名称)3、结构体也可以没有名称,但是不能调用4、结构体的定义: struct student s15、结构体变量的初始化:struct student s1={数据按结构体里类型的顺序填写,用逗号隔开}6、变量引用成员用“...原创 2018-11-27 22:46:40 · 77 阅读 · 0 评论 -
linuxC学习第二十天
一、内存管理1、程序分两部分(1)没有运行的部分:存放在硬盘中(2)正在运行的部分:存放在内存中内存的分类:2、栈栈存放的是所有自动变量(局部变量)、函数形参,这个入栈和出栈是由系统自动完成的3、堆是由程序员自己管理的,在程序运行的过程中进行动态的分配。4、栈和堆的区别(1)管理方式不同:栈由系统自己管理,堆由程序员管理(2)空间大小不同:栈的空间远小于堆的空间(3)是否产...原创 2018-12-01 21:46:07 · 107 阅读 · 0 评论 -
linuxC学习第二十一天
一、预编译相关1、define(1)define的用法(1)#define定义宏常量可以出现在代码的任何地方(2)从#define宏定义位置开始,以后的代码就都可以使用这个宏了(3)编译器会在预处理的时候用真身替换宏(2)定义函数#define SUM(a, b) ((a)+(b))(3)撤销定义#Undef SUM(4)内置宏LINE:表示正在编译的文件的行号FILE:表...原创 2018-12-01 21:55:09 · 79 阅读 · 0 评论 -
进程通信
一、管道通信1、无名管道1、什么是管道:管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道尾部写入数据,另一个进程(读进程)从管道的头部读出数据。2、管道的特点:1、单向性,一端写,一段读2、管道中数据是一次性的,读完就没有了3、管道中没有数据的时候,读取时会阻塞,直到管道中有数据3、管道的用途:一般用于父子进程之间的通信,因此又称无...原创 2018-12-25 19:39:30 · 162 阅读 · 1 评论