
- 前言
- 学习,就是得不要脸!!!
- 面子值几个钱,不懂就去请教别人。刚开始学习嵌入式人工智能,基于Linux的C语言课程。
- 零、(第一次发博客,难免会有错误,望您不吝指正,本文章内容全部为老师上课所讲,至于没写到的就是老师没讲到,日后工作中可能会更新缺失的)
- 一、编程环境介绍
- 虚拟机
- 为什么要安装虚拟机
- 常用的Linux系统
- 二、嵌入式
- 解释解释什么t*d叫t*d嵌入式
- 裁剪
- 三、目录结构
- 四、Linux命令
- 五、
- 直奔主题 : 结构体
- 概念
- 定义
- 结构体初始化
- 访问
- 方式一:通过结构体变量访问成员
- 方式二:通过结构体指针访问成员
- 我好困,那就明天再写吧
- 更新,见另一篇文章:六:模块化编程
- 七:IO
- 7.1
- I: input ———— O: output
- 7.2 文件相关的概念:
- 7.2.1 文件类型:
- 7.2.2相关函数:
- 7.3 流和FILE指针
- 7.3.1 流
- 7.4缓冲区
- 7.4.1 缓存分类:
- (1)全缓存
- (2)行缓存
- (3)不缓存
前言 学习,就是得不要脸!!! 面子值几个钱,不懂就去请教别人。刚开始学习嵌入式人工智能,基于Linux的C语言课程。
零、(第一次发博客,难免会有错误,望您不吝指正,本文章内容全部为老师上课所讲,至于没写到的就是老师没讲到,日后工作中可能会更新缺失的) 一、编程环境介绍 虚拟机
虚拟机是在我们电脑上虚拟出来的一台PC机。
为什么要安装虚拟机c语言的学习方式有很多,编译环境固然也很多。刚接触c语言时我用过DEV C++、VS环境,这两个软件容易 *** 作,不用去记很多命令,调试也方便,不过他们都是安装在Windows系统上的。学习Linux就需要用LinuxOS,所以需要在Windows上面装虚拟机来模拟Linux *** 作系统。
常用的Linux系统常用的Linux *** 作系统有:小红帽(RedHat)、Debian、Ubuntu等。我是使用的Debian系统
二、嵌入式 解释解释什么td叫td嵌入式以计算机技术为基础,软硬件可裁剪。所谓软硬件可裁剪的意思就是:用软件来控制硬件,而且是根据不同的需求来实现不同的功能,这就叫裁剪。简言之:根据用户对产品的需求来定制,就叫所裁剪
裁剪裁剪分为两大块,一是软件裁剪:LinuxOS来实现。二是硬件裁剪:硬件模块电路的搭建
三、目录结构LinuxOS的目录结构:如同一颗倒立的树,根在顶部,越往下分叉越多
WindowsOS的目录结构:如同一片森林
linux系统下,一切皆文件
Linux系统下的目录分布:
根目录(/):Linux文件系统的顶层目录,所有的一切都在它之下,也从它开始
家目录(~ or 主目录 or 工作目录 or HOME):工作目录
注意:
1、 家目录以上的目录普通用户没有 *** 作权限,想要 *** 作的话给命令的最前面加sudo
2、 HOME是家目录,而home不是家目录,但是我们的家目录在home目录之下,huangxiaoyang才是家目录
命令格式:命令 [选项] [参数]
[]里面可以省略 [选项]:功能 [参数]: *** 作的对象
三个参数之间都要用空格隔开
打开终端:Terminal
自动补全键:Tab
清屏:ctrl+l
上下箭头:可以查看历史命令
命令提示符:huangxiaoyang@kali
用户名@主机名 :当前路径$
@:分隔符
$:普通用户
#: 超级用户
绝对路径:从根目录开始的路径
pwd:显示当前目录的绝对路径
ls:显示当前路径下的内容
蓝色:文件夹(目录) 白色:文件 绿色:可执行文件
ls 路径:显示当前路径下的内容
举个栗子:ls day10。
从当前路径下找一个叫做day10的目录,然后将该目录下的内容显示出来
。。。等我有空了再补全
直奔主题 : 结构体 概念结构体是一种自定义的数据类型,是一类事物相关属性的集合
定义struct 结构体名
{
属性1;
属性2;
...
属性n;
}; //花括号最后一定加分号;
比如要统计学生的姓名、年龄、身高,就可定义一个结构体用来存放这三个变量:
struct person //定义了一个结构体,它的数据类型为:struct person
{
char name[30]; //字符串数组:存放姓名
int height; //整形变量来存放身高数据
}; //结尾要加分号
结构体初始化
由 int a = 5;(数据类型 :int 变量名:a)
可知:struct 结构体名 变量名 = {……};
其中(struct 结构体名)为数据类型,
例如struct person student = { "liu ya qiong" , 168}; //struct person 就是数据类型 student为变量名 //结构体里面第一个属性是name,属于字符串数组,所以赋值“……”,第二个为int型,所以赋值数字
#include
struct person
{
char name[30];
int height;
};
int main(void)
{
struct person student = {"liu ya qiong" , 168}; //定义一个变量student,数据类型为struct person
printf("%S\n" , student.name); //通过结构体变量访问成员
printf("%d\n" , student.height); //同上
return 0;
}
方式二:通过结构体指针访问成员
指针变量名->成员;
//定义一个整型指针
数据类型 指针变量名;
int *p = NULL;
struct person *pp = NULL;
#include
struct person //定义一个学生信息结构体
{
char name[30]; //姓名
int height; //英语
};
void Input(struct person *p) //输入函数,定义一个struct person 类型的结构体指针p
{
printf("请输入:姓名,身高\n");
scanf("%s %d" , p->name , &p->height);
//%s,输入的是字符串数组,所以不用取地址,后面的身高成绩需要取地址
//printf("%s %d",p->name,p->height);输入函数测试代码
}
void Output(struct person *p) //输出函数,同上
{
printf("姓名:%s " , p->name );
printf("身高:%d " , p->height);
}
int main(void) //主函数
{
struct person student = {0}; //初始化全为0
Input(&student); //将student这个结构体的地址传给输入函数
Output(&student); //将student结构体的地址传给输出函数
return 0;
}
运行效果:
模块化编程
七:IO 7.1 I: input ———— O: output顾名思义:输入输出
我们学过的输入有:scanf()、gtes()
输出有:printf()、puts()
规范来讲:输入是把数据写入到内存,输出是从内存读取数据到文件。换言之:输入是从键盘将数据输入到内存中,输出是将数据从内春输出到终端。
##7.1 IO的分类
IO分为两类,一类是标准IO、另一类是文件IO。
标准IO: 按照C语言标准的一系列用来进行输入和输出的函数,是由标准I/O库由ANSI C标准说明:由美国国家协会(ANSI)及国际化标准组织。
标准IO:
| 1 | 可以跨平台,既可以在Windows下使用,也可以在Linux下使用 |
|---|---|
| 2 | 标准io通过缓冲机制减少系统调用,实现更高的效率 |
| 3 | 文件流指针:通过结构体来 *** 作 |
| 特点 | (1)带缓冲区 (2)通过FILE*来 *** 作 |
文件:一组相关数据的有序集合(视频、图片)
文件名:这个数据集合的名称
1、普通文件 –
(1)ASCII文件(文本文件)
(2)二进制文件(视频,图片)
2、目录文件 d
3、链接文件 l
4、字符设备文件 c
5、块设备文件 b
6、管道文件 p
7、套接字文件 s
系统调用: *** 作系统提供给应用程序的接口(函数)
系统: *** 作系统 调用:调用函数 调用 *** 作系统提供的函数
读文件:一次性读很多的内容到缓冲区中,然后我们的应用程序只需要从缓冲区读取数据
写文件:一次性写内容到缓冲区中,然后再调用一次系统调用写入文件
FILE指针:每个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息,这些信息是保存在一个结构体类型的变量中,该结构体类型是由系统定义的,取名为FILE。
7.3.1 流只要打开文件就会有缓冲区,有缓冲区就会有流:字节的进进出出(内存和缓存之间的字节)
注意:只有标准io才有流的概念
注意:标准I/O库的所有 *** 作都是围绕流(stream)来进行的,在标准I/O中,流用FILE *来描述。
数字2001
文本流:‘2’ ‘0’ ‘0’ ‘1’
二进制流:00000111 11010001
所谓缓冲区。顾名思义就是起到一个缓冲的作用,能够暂存一些数据,举个栗子吧: 假如我在立创PCB下单了一个PCB工程,板子正在加工,现在我需要拿着BOM表去采购元件,需要电阻、电容、二极管、乐ED等东西,那么你是一件一件的下单?还是放在某宝的购物车一块下单? 当然,若是没有购物车这个功能,我们只能一件一件去下单,一次次的输入付款密码,确认订单。不过现在它有购物车的功能,我们只需把所需的元件全部添加到购物车,一次结账即可。这样会极大的降低我们的大脑使用率。------
缓冲区就是我们的购物车,当我们需要打印10句hello时,不用去每次调用cpu输出hello,只需要将待打印的5个hello放入缓冲区,经由cpu一次处理即可完成5句话的打印。
缓冲机制的作用:减少系统调用的次数
当缓冲区满、程序运行结束、强制刷新缓存区时会刷新缓冲区
(2)行缓存当缓冲区满、程序运行结束、强制刷新缓存区、遇到换行符时会刷新缓冲区
(3)不缓存当程序运行起来时,有三个文件默认已经打开,标准输入、标准输出、标准出错,对应的流指针分别为:stdin、stdout、stderr
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)