ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:27.42KB ,
资源ID:351328      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-351328.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(linux_C实习笔记.docx)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

linux_C实习笔记.docx

1、linux_C 实习 笔记嵌入式实习笔记第一周linux 基本命令:计算机由软件和硬件:硬件: 中央处理器(CPU) , 内存, 硬盘, 主板, 显卡, 电源, 输入输出设备(键盘,鼠标, 显示器) 。内存: 无法长久保存数据, 关机内容自动消失。硬盘: 可以长久保存数据, 关机内容不丢失CPU:只能直接操作内存, 不能直接操作硬盘。软件: 应用软件和系统软件。一, linux 的文件系统:一个纯净的 windows 操作系统, 大概拥有 8 千到 1 万个文件windows: 根目录: 盘符 C, D, Elinux: 根目录“/”/opt 应用程序/usr 用户通用文件/bin linux

2、 的常用命令/sbin linux 的不常用命令/etc 系统的一些配置文件/dev 设备管理/var 应用程序/home 用户登陆的目录。 。 。用 more 查看配置文件的内容more /etc/passwd(查看用户信息) 注意 more 后有空格shadow(权限不够, 管理员权限) eg: more /etc/shadow或 cd /cd ectmore passwd 等价于命令 more /etc/passwd分页显示查询内容:回车: 换行空格: 翻页q: 退出基本命令: 文件的目录有两种描述方式绝对路径(根目录开始) 和相对路径 一个文件的绝对路径只有一个, 但是一个文件的相对路

3、径可以有多个eg: more . /. . /. . /home/soft1/tarena/m. cpp特殊:. 当前目录,. . 上一级目录用户登录目录下一层目录的名字 (就代表) 下一层目录在开发的一个过程当中, 用相对路径命令格式:命令 【-选项】 【-参数】 (【】 表示可选) (命令后必须有空格)选项和参数是可选的, 它指向一个 1. clear 清屏2. pwd 打印当前路径(让终端告诉我我在哪里)3. cd 改变当前目录格式 cd 路径(注意 cd 后有空格)cd . (无实际意义) 切换到当前目录cd. . 切换到上一级目录cd/ 切换到根目录 homecd(后无其他操作时)

4、默认切换到用户的主目录目录 soft1cd 切换到用户的登录目录4. ls 显示当前目录的文件列表ls 不加参数(不区分目录和文件, 不会显示隐藏文件) 默认-a 显示所有的子文件和子目录 ls -a-l 显示详细信息-al 显示所有文件的详细信息5. touch 创建一个文件touch 文件名6. mkdir 创建一个目录mkdir 目录名mkdir -p 可以创建多层目录7. cp 拷贝目录和文件-r 拷贝目录8. mv 剪切目录或文件(不用加-r 的选项)9. rm 删除文件或目录-r 删除目录(目录内容全部清空无法找回慎用)10. rmdir 删除目录(删除空目录)11. vi 打开一

5、个文件, 如果该文件不存在, 就创建该文件vi 打开一个文件有 3 种状态1. 进入状态, 按 a, i, o 进入编辑状态,按“: ” 进入命令行状态2. 命令行状态w 保存 q 退出wq 保存退出set nu 显示行号w 新文件名 另存为! 强制 !w 强制保存, !q 强制退出3. 编辑状态, 按 Esc 退回到进入状态练习: 使用 vi 编辑 Message. txt 输入个人信息包括: 姓名, 年龄, 专业, 打印出来hello. c敲一个程序打印一句话 Hello World1. 用 vi 编辑一个. c 的文件2. 保存退出, 使用 gcc 编译连接 3. . /a. out 运

6、行在 xx. c 文件中, 由 3 部分组成#开头的叫做指令, 常见指令, #include #if #define 等include 的作用是包含一个文件, 一般会包含在/usr/include 下的头文件(. h) intmain() 叫函数, main 主函数。 在一个程序之中, 有且仅有一个主函数函数由返回类型, 函数名。 参数列表(多个参数用“, ” 隔开) 函数体在函数体中的内容叫语句, 语句以分号结束c 程序原理:1, 编写一个 c 程序2, 与处理所有的指令3, 编译生成. o 文件4, 连接程序, 把库函数的外部资源和. o 文件进行连接, 生成 a. out(可执行文件)

7、文件a. out5, 加载 a. out 文件(从硬盘加载到内存)6, 执行 a. out 文件gcc(调用编译器, 将源程序进行编译, 生成文件. c) 常用选项gcc Hello. c-c 只编译不连接-o 目标文件名, 给可执行文件取一个名字(默认的是 a. out)-E 仅仅只做预处理-S 生成汇编代码. . . . .#include只在系统提供的目录里面去找#include先在当前目录下查找该头文件, 如果没有就去系统指定的目录查找 练习编写一个 c 程序, 用 printf 函数打印个人信息注释:/单行注释/*/多行注释c 语言的编码规范:1, 语句可以能分开放在多行2, 空格能

8、够更好的区分代码3, 缩进能够更好的区分代码的层次, 一般缩进 2-4 个空格的大小4, 空行能够更好的区代码块5, 变量和函数的名字要有意义, 采取驼峰式命名规则或者是下划线命名法:GameAreaA_name数据类型:基本数据类型:整形: int (4) short (2) long()实型: float double字符型: char如何获取数据类型所占字节数sizeof(类型) sizeof 是操作运算符printf(%dn, sizeof(int) ) ; 变量: 其实就是内存中的一块区域。 变量名就对应这个区域。变量定义的格式类型 变量【=初值】 ;int a;int a=10;i

9、nt a, b, c;int a=19, b, c=20;初始化: 在变量定义的时候就给他一个值。(区别于赋值: (在变量定义之后改变它的值) a=20)标示符: 变量或者函数, 宏等实体的名字。标示符的命名规则:1, 标示符由数字, 字符或者下划线组成, 其中数字不能是名字的第一个字符。 2, 标示符区分大小写3, 理论上标识符的长度不限, 但编译时编译器会自动截断。4, 标示符不能和 c 语言的关键字同名关键字就是 c 语言自身已经使用的特殊单词, 不能被程序员作为标示符, 常见关键字: int,short, double, struct, break, continue。 。 。标准输入

10、输出函数printf 可以打印 0-n 个变量(参数数量可变)printf(“字符串” ) ;printf(格式字符串, 表达式 1, 表达式 2。 。 。 )格式字符串:普通字符串和转换格式(%d, 占位符)int a=10;printf(“年龄是%d%d%dn, a, b, c) ;其中转换格式:i/d 十进制的整数c 字符char a=cA;printf(“%c” n) ;scanf()s 字符串f 浮点型(float, 如果你要输出一个 double 类型的数据, if)p 输出地址x 十六进制整数o 八进制的整数scanf() 可以从键盘输入 0-n 个值, 存到定义的内存区域sca

11、nf(格式字符串, 变量的地址)int a;scanf(“%d%d%d” , &a, &c, &d) ;从前向后逐一检查验证输入, 遇到不符合类型格式时就返回, 并把前面符合格式的存入变量 练习: 计算两个整数, 然后程序输出这两个整数的和。int a, b, ca=b+c输出菱形(用*)第二周char 型的长度为 1(一个字节) 表示占 8 个位, (0000 0000) 表示范围(char=256 超出范围) (-128127)枚举类型: 为了减少候选个数而存在,构造类型:1. 数组:定义格式: 类型 数组名【长度】数组中放的是类型相同的元素, 使用的时候最后一个元素的下标是长度减 1注意

12、: c/c+中不作数组越界检查二维/多维数组定义格式类型 数组名【长度】 【长度】 。 。 。 。结构体:定义格式: struct 结构体名类型 成员 1;类型 成员 2;。 。 。 。 ;访问成员, 使用“. ” 访问成员,结构体数组:定义格式:struct S ss【长度】访问结构体数组中的元素成员:ss【2】 . name联合体: union定义格式: union U类型 成员名;类型 成员名;类型 成员名;. . . . . . ;用法: c. , 联合体变量. 成员注意: 成员之间的相互影响。指针:定义格式: 类型*变量名;赋值: 指针变量名=&同类型变量。使用指针输入(scanf

13、函数)int i;int* p;scanf(“%d” , p) ; 或int i;scanf(“%d” , &i) ;第三周:(C 语言的灵魂)指针: 指向数组的指针int* p;int array10; 改:int* p;p=&array; int array【10】p=array;注意: 警告: 从不兼容的指针类型赋值p(整型)array(数组指针)类型:数组名: 实际上是 const int* array;通过指向数组的指针对数组进行操作*(p+i) =i;注意: i 与类型有关, 每次指针偏移字节变态程序与类型有关 时需要 i*4 偏移int size=sizeof(array) /s

14、izeof(array0 ) ;求数组的长度sizeof(数组名) /sizeof(数组名0 ) ;报错有游离的什么, 可能是因为有中文数组指针: int(*p) 10;实际上是一个指针数组, 这个数组中的元素和指针类型一样。 指针数组: int *p10 ;是一个数组, 数组中的元素类型是指针,二级指针:就是指向指针的指针int i;int* pi;int* ppi;pi=&i;ppi=π 结构体指针:struct S. . . . ;struct S ss;struct S* pss;pss=&ss;ss. 成员;pss-成员;(*pss) . 成员;sizeof(指针) 的返回值为

15、int array【10】 =4*10=40;double array【10】 =8*10=80;指针的长度占 4 个字节。c 语言的运算符:1. 算术运算符: + - * / % + -前+: 先改变值,后+: 后改变值注意:前+: +i + +i + +i=(+i + +i) + +i)当 i=5 时, 上式为 22, =(7+7) +8=22(自增操作数必须是左值+i)i+时系统会报错只能 2 个+/-使用, 不能出现 3 个的情况 i+2. 关系运算符: = b? a:b; (输出最大值) max) ;9. 下标运算符: 第四周 (按位异或) (电路相应操作) 流程控制语句:分支语句:

16、while(1) ; printf()scanf()switch(控制表达式) case 常量表达式:语句 1;break;case 常量表达式:语句 2;default:语句;return 0;退出: ctrl+cswitch(num) case 0:return 0;case 1:语句 1;default:语句;注意:1. 控制表达式是被当成一个整数来处理, 它只能是整数 或者是字符, 不能是实型2. case 语句可以有多个3. case 里面的语句可以有多条, 并且不需要用 括起来4. default 可以没有case 必须接常量, switch(里必须为整数)break 关键字: 跳

17、出循环体或者一个语句块循环语句:while(条件表达式) 语句;步进语句;while(1) ; 死循环(eg: 年月日检测可以输入多次, 避免. /a. out)do-while()do语句;while(条件表达式) ;for 语句:基本格式:for(表达式 1; 表达式 2; 表达式 3; . . . . . . )循环体;(break; 循环体只执行一次)注意:表达式 3 一般为步进语句, 表达式可以省略, 但是“; ” 不可省1. 先执行表达式 12. 执行表达式 2;3. 执行循环体4. 执行表达式 35. 从第二步开始循环执行 2, 3, 4, 步;条件语句:if 语句if/else

18、: 如果 或者 否则基本结构:if(表达式) /如果 有且仅有一次语句 1;else if(表达式) /或者 可以没有, 如 果可以有 0n 个语句 2;else/否则 可以没有语句 3;注意: 0 为假, 非 0 为真if 为真, else 语句不会执行1. if 语句只能有一个分支语句被执行2. 有 else 的 if 语句, 必须执行其中一个3. else if 和 else 可以出现也可以不出现4. else 总与离它最近的未匹配的第五周C 语言的函数:从函数的定义来看:库函数: 有 c 语言提供的无需用户自己定义也无需在程序中做类型说明, 只需你在使用的时候加上包含该函数定义的头文件

19、自定义函数: 用户按照一定的需求自己定义的函数, 需要在函数使用之前进行类型说明。 从函数的功能上可以分为:有返回值的函数: 在被调用执行之后给调用者返回一个计算结果没有返回值的函数: 一般是完成某些特定的功能, 不需要给调用这返回一个值。 从主调函数和被调函数之间的数据的传递;带参函数: 在声明和定义一级被调用时都需要有参数。不带参数的函数:函数的一般形式:类型说明符 函数名()函数体return【表达式】 ;空类型: void如果通过 return 函数的类型和函数定义时返回的类型 不匹配, 一定义时的类型为准,做一个隐式的类型转 换。函数的调用方式:int add() 函数语句: add

20、() ;函数表达式: 函数作为表达式的一部分。int num=add() ;函数参数: 把一个函数放在另一个函数的参数位置。printf(“%d” , add() ) ;第六周用函数实现动态链表:栈区, 堆区和全局数据区:数据类型:1. 局部变量:特点: 不初始化则为某一数字或乱码不确定: 存放在栈区的变量作用域: 从变量的声明位置开始到函数的结束,void func()int num;. . . . .void func1()声明周期: 从变量的声明开始到变量的所在函数结束2. 块变量: (属于局部变量)作用域: 从变量的声明位置开始到所在的代码块的结束位置;声明周期: 从变量的声明位置开始

21、到变量所在代码块结束全局变量: 存放在全局数据区,特点: 即使不给改变量初始化, 变量的值固定为 0;作用域: 从声明位置开始到本程序结束位置。声明周期: 从程序开始到程序结束。*动态开辟内存, 不释放则一直存在,malloc: 在堆区开辟内存free: 释放指定的那一块内存 int *p;p=(int*) malloc(sizeof(int) ) ;在堆区为 p 开辟内存free(p) ; 释放 pmalloc 原型:(void*) malloc(size_t size) t: 表示 int栈区存放局部变量堆区存放链表: 不一定相邻物理地址链表:1. insert(int value) ;

22、/插入2. DeleteValue(int value) ; /全局变量3. DisplayLink(Node*head) ;4. clearLink(Node*head) ;pnext=null; /避免野指针问题free(节点内存) ;扩展:随机函数: rand() , srand()生成随机数:1. rand() ;2. rand() %10;3. rand() %(b-a) +a; 9+1srand() :srand(time(NULL) ) ;#includerand() 产生的是伪随机数, srand() 函数提供随机数种子, 种子不同的话随机数也就不同, 调用 srand(tim

23、e(NULL) )选择排序:思路: 每一次从待排序列中选择一个最小或者最大的元素, 顺序放在排好的数列的最后, 直到全部待排序数列排完。第七周linux 的基本命令:ls, mkdir, cd, touch, pwd,ls cd ls mkdir/cdC 基本数据类型: char short int long实型: float(单精度) (4)double(双精度) (8)结构类型: 数组啊 ai , 结构体 struct,联合 union,指针: (*)数据结构: 栈, 链表, 排序(冒泡, 选择)小技巧:交换数据: 1. 中间变量2. 不用中间变量:(1) a=a+b;b=a-b;a=a-

24、b;(2) a=ab;b=ab;a=ab;简单文件操作:流式文件操作:typedef struct. . . . . . . FILE;FILE 在头文件 stdio. h 中。FILE 这个结构体中包含了 文件操作的基本属性, 对文件的操做都要通过这个结构体的指针来进行。读文件(打开文件, 内容显示) a. txt: more a. txt函数:fopen(文件名, 权限字符串) ;权限字符串:w 打开只写文件, 若文件存在则长度清为 0; 即该文件的内容会消失。如果文件不存在, 则新建文件。r 打开只读文件, 该文件必须存在。a 以附加方式打开只读文件, 如果不存在则新建, 如果文件存在则

25、写入文件的尾部。fclose(FILE* file) ;fputc( X , FILE* file) ; 写一个字符到文件流中int fgetc(FILE* file) ; 从流中读一个字符fputs(hello, file);fgets(字符串, 长度, 文件指针) ;从文件流中读一行或者指定字符char *fgets(char *s, int size, FILE *stream) ;向文件内写入字符串:#includeint main()FILE* file; /改为 a, 多次执行时文件内的内容会重复出现c+结构体:struct S . . . . . . . ;C: struct S

26、 ss; C+: S ss; /定义结构体变量可以省略 struct 关键字(c+可以兼容 c的定义方式) 枚举类型:在 c+中枚举是一种独立的数据类型。引用:1. 实际上可以理解成一个变量的别名。2. 引用在声明的时候必须初始化。3. 引用一旦初始化就不能再成为别的变量的引用。4. 不能有空引用。类:定义模式:class 类名public:. . . . . . . . . .project:. . . . . . . . . . .private:. . . . . . . . . . ;声明:类名 对象名声明时进行初始化:类名 对象名(. . . . . ) ;类有 int 数据, 打印

27、的函数第八周C 基本数据类型:指针: 结构类型指针, 基本类型指针,流程控制语句: while do, do while,函数, 数据结构,=C+面向对象的语言(类的大小取决于类内的数据成员)三大特征: 封装, 继承, 多态封装: 听过访问控制对类型(类或对象) 的属性和行*构造函数:自定义的构造函数:*class 类名类名(参数列表) . . . . . . . ;构造函数的作用: 为进行访问限制。1. 分配对象所需要的资源(空间, 文件, 信号 量. . . . . . . )2. 给成员数据赋初值析构函数: (自定义)class 类名类名(void)析构函数体 ;注意: 析构函数没有参数

28、, 不能重载。1. 对于未定义的析构函数的类, 系统会提供一个缺省的析构函数, 该析构函数会调用成员及其基类的析构函数。2. 缺省析构函数不负责释放动态分配的资源。3. 析构函数所释放的资源不仅局限于内存, 还包括文件, 信号。 。 。 。重载: 在同一个作用域中, 函数名相同, 形参列表不同的函数可以有多个, 他们构成重载关系。注意: (形参表不同, 包括形参的类型和个数, 顺序)A b;A a(b) ; /a 类型的 b 对象拷贝构造函数:class 类名类名(const 类型& obj) /obj 代表变量可以拷贝的方式从obj 复制成员变量的值 ;/深拷贝和浅拷贝(拓展问题)使用拷贝构造函数的时机:用于同类型的对象做初

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2