华清远见-重庆中心-c高级学习总结

c高级的内容学习了七天左右,最后一天考试复习。c高级总体上看是比c基础难一些,最开始和c基础一样,也是先学习Linux的基础,和c基础不同的是,学习了新的shell命令、软件安装、网络配置和shell脚本等。接着后面学习c语言的灵魂——指针,什么是指针?指针数组、数组指针、指针函数、函数指针等,知识点还是有些让人头大,不过熟能生巧,多多练习就好了,下面就本阶段学习作一个总结。

一、知识点总结

    • Linux基础

a.Linux系统的目录结构

/ 根目录 类似于Windows中的C盘 。

/bin 系统的可执行文件命令或可执行程序。

/dev 系统设备文件。

/etc 系统配置文件或服务的目录。

/home 用户的家目录。

/lib 系统库文件目录。

/mnt 系统挂载点目录。

/opt 系统应用程序安装包存放位置类似于Windows中 program files(x86)。

/proc 一个虚拟的文件系统路径,用于查看系统中的 程序运行状态等信息 。

Linux文件系统与Windows文件系统的区别:Linux文件名 严格区分大小写。

b.shell命令

一般格式:命令 [-选项] [参数]

命令取别名:alias 命令别名='命令原动作',如:alias ls='ls --color=auto'

删除别名:un alias 命令别名。

wc 统计命令:用于统计字符或字符串。

wc -w :统计输入的字符串中 字符的个数(使用' '分割的 )。

wc -l :统计输入的字符串中 '\n'的个数即行数 。

grep 命令:用于查找 输入的字符串。

echo:echo "字符串" ,在终端中 输出字符串。

grep:查找字符串。

head:显示文件开头。 //默认10行

tail: 显示文件结尾。 //默认10行

diff: 比较两个文件。

file: 查看文件类型。 //Linux是看文件内容 不是看后缀

echo:显示文本 。 //有点像printf();

date:显示时间和日期。 //显示当前日期

gzip: 压缩文件。

ungzip :解压文件。

usermod:修改用户的属性,-d 修改用户家目录的位置,前提新家目录要存在。

ps -aux :查询当前系统中 有哪些进程在运行。

top:动态显示运行的进程。

kill 命令 :用于发送信号给进程 ,kill -9 PID(编号):发送杀死信号个某个进程。

bg 任务号:让后台暂停的任务继续运行。

fg 任务号:后台的任务切换到前台。

c.shell中的符号

通配符: 使用一些特殊符号代指某些情况或字符。

* 代指匹配任意长度任意字符 。

? 配置任意 1个字符长度的字符 。

[] 选择匹配 1个长度的字符 。

[-] 选择匹配 一定范围的 1个长度字符。 如:[0-9],[a-z]

[^] 选择匹配不是该范围的 1个字符长度。 如:[^0-9],[^a-z]

| 管道符:连接两个命令, 将前一个命令的输出作为下一个命令的输入。

\ 转义符(反斜杠),将原本有特殊意义的转义为正常字符 。

/ 目录分隔符(斜杠) 目录分隔符在shell命令中该符号不能转义。

>,<输入输出重定向符 输出重定向 (>),>:覆盖模式,>>:追加模式,输入重定向(<)

d.软件的安装与卸载

dpkg相关命令:

dpkg -i <package> 安装一个在本地文件系统上存在的Debian软件包。

dpkg -r <package> 移除一个已经安装的软件包。

dpkg -P <package> 移除已安装软件包及配置文件。

dpkg -l <package> 列出安装的软件包清单。

dpkg -s <package> 显出软件包的安装状态。

dpkg -reconfigure <package> 重新配置一个已经安装的软件包。

e.shell脚本

定义:是一种解释性编程语言,将多个shell命令 有序存放于文件中。

shell脚本格式

1.文件 通常 .sh后缀

2.文件第一行 #!/bin/bash 指定shell解释器

3.给shell脚本 赋值可执行权限

位置变量

shell脚本在运行时,给定的参数或选项将通过位置变量进行传递,不需要定义 。

$0 shell脚本名及路径

$1 第一个选项或参数

$2 第二个选项或参数

..

$9 第九个选项或参数

预定义变量 :

$# shell脚本执行时参数的个数

$@ 包含所有参数

$* 包含所有参数

$? 是上一个命令执行时 的 退出状态值 (返回值)

字符串测试:

s1 = s2 测试两个字符串的内容是否完全一样

s1 != s2 测试两个字符串的内容是否有差异

-z s1 测试s1 字符串的长度是否为0

-n s1 测试s1 字符串的长度是否不为0

整数测试:

a -eq b 测试a 与b 是否相等

a -ne b 测试a 与b 是否不相等

a -gt b 测试a 是否大于b

a -ge b 测试a 是否大于等于b

a -lt b 测试a 是否小于b

a -le b 测试a 是否小于等于b

文件测试:

-d name 测试name 是否为一个目录

-e name 测试一个文件是否存在

-f name 测试name 是否为普通文件

-L name 测试name 是否为符号链接

-r name 测试name 文件是否存在且为可读

-w name 测试name 文件是否存在且为可写

-x name 测试name 文件是否存在且为可执行

-s name 测试name 文件是否存在且其长度不为0!

f1 -nt f2 测试文件f1 是否比文件f2 更新

f1 -ot f2 测试文件f1 是否比文件f2 更旧

注意:在shell中 默认定义的变量 都是全局变量的,若要定义 局部的变量,使用 local 修饰变量。

2.C语言-指针

a.指针是什么?

指针的含义有两个,一是表示内存的地址,此时它是一个常量,二是表示一个存放内存地址的变量,指针变量。

b.指针变量的定义和含义

定义:存储类型 数据类型 变量名;

如:int *p = &a;定义了一个指针变量p, 该变量将会存储 一个地址,该地址所在的内存是 int类型。

赋值:指针变量 = 地址常量/其他指针变量,通过指针变量赋值与对应的地址建立指向关系。

野指针: 定义时 没有给定初始值,或指向的内存地址不可用。

空指针: 指针变量的值是地址0 即 NULL (void*)0

c.指针的运算

关系运算:

!= 左右两边只能给指针类型 。表示判断这两个指针是否指向同一个内存空间 。

> < >= <= == != 指针之间可以关系运算,表示判断这两个指针位置关系。

指针的算数运算

指针只能进行有条件的算数运算,两个指针“ - ”在大地址可以减小地址,其表示的物理意义是指这两个指针之间相距的距离,其单位为指针指向的类型,这两个指针指向的内存是连续的 。

指针与整型运算:

指针 “ + ” 或“ + ”一个整数: 其结果是一个对应类型的地址,表示对当前指针(+)或 (-)前方对应个数的类型的地址。

d.指针与数组

数组名可以当指针用,是一个指向元素类型的指针,是一个指针常量,不能进行指针赋值操作,指针变量可以当数组使用,数组的所有操作均可使用

e.指针的各种用法

数组指针: 一个指针指向一个数组 ,&数组名。

如:int arr[5]; int* p = arr;

指针函数 :指一个函数的返回值是一个指针,不能是野指针,返回的该指针应注意不能指向无效或非法的地址 ,通常该指针主要指向静态区、堆区、常量区。

函数指针: 是一个指针变量,指向一个函数的入口地址。

函数类型: int func(int *a,int *b);其类型为 int (int *,int *);则定义函数指针 : int (*p) (int *,int *);

函数指针数组:一个数组其元素是函数指针。

3.C语言-结构体、共用体

a.结构体(struct)

定义:是一种构造数据类型,可以用于存储多个不同类型的数据,在内存中连续存放。

如:

struct 自定义结构体类型名 {

成员列表;

....

};

成员: 一个结构体中的一个数据,称作结构体的一个成员。

结构体定义步骤:(1) 先定义结构体类型 (2)通过该类型定义结构体变量

结构体成员的访问:结构体变量.成员名

结构体指针: 一个指针指向一个结构体首地址。访问:结构体指针 -> 成员名;

结构体数组:一个数组其元素是结构体。

结构体指针数组:一个数组其元素是结构体指针。

b.共用体(union)很少使用

定义:多个不同类型的数据公用同一片内存空间,内存空间的大小以最多的那个类型为准。

如: union 共用体名

{

共用体成员名;

....

};

二、学习心得体会

总的来说,c高级的学习内容普遍难于c基础的内容。以前在学校也学过c语言,但大部分的内容都是c基础的内容,像指针、结构体、共用体等内容完全没有接触,指针又是c语言的灵魂,重点中的重点,难度大于c基础,也可能是之前没有接触指针,所以学习中觉得比较难,但是经过后面的学习,指针也不是想象的那样难。对指针的基本操作是没问题的,但也有有几点不足的地方。

a.写的代码错误太多

在自己的代码中最常见的错误就是“段错误”。编译不会报错,但运行时会报错,查找错误很让人头大。没有一个好的方法查找错误,特别是逻辑上的错误,需要找一个好的方法。

b.错误警告看不懂

自己英语方面确实很差,有些单词不认识,就导致错误或者警告原因看不懂,但是错误多了,也就认识了。哈哈,没想到程序报错还能学习单词。

c.指针运用不够熟练

当需要用指针实现某种功能的时候,我需要花比较多的时间去想该怎么写,然后写出来一堆的错误,打代码还是最好的学习方式,因为只有打代码才能够提升自己的熟练度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 根据所提供的华清远见-c0rtexas9资料路径,在实验中涉及到了Linux系统标准IO的应用实验。Linux系统标准IO是指Linux操作系统提供的一套标准化的IO库,可以用于操作文件、输入输出等。以下是对该实验的简单描述: 这个实验主要是关于Linux系统标准IO的应用实验。在该实验中,我们可以找到程序的源代码,该源代码是用Linux应用程序的方式编写的。通过这个实验,我们可以了解和学习Linux系统标准IO的基本操作和使用方法。 Linux系统标准IO是一套非常强大和灵活的IO库,提供了一系列的函数和方法来操作文件和进行输入输出。在实验源码中,我们可以看到一些常见的标准IO函数,比如fopen、fclose、fprintf和fscanf等。 通过这些函数,我们可以打开和关闭文件,从文件读取数据或向文件写入数据。实验源码中包含了一些常见的操作,比如读取文件、写入文件、复制文件和查找文件等。通过实验,我们可以了解到如何使用这些函数来完成不同的操作。 此外,在实验源码中可能还会涉及到一些其他的Linux系统标准IO相关的知识点,比如文件指针、文件描述符和文件流等。这些知识点对于理解和使用Linux系统标准IO函数非常重要。 通过实验中提供的源代码,我们可以进行相应的实验操作,从而更好地理解和学习Linux系统标准IO的使用。同时,我们也可以通过对实验源码的分析和调试,更深入地了解Linux系统标准IO的内部工作原理。 总之,通过这个实验,我们可以掌握Linux系统标准IO的基本操作和使用方法,从而提高我们在Linux系统中进行文件操作和输入输出的能力。 ### 回答2: 华清远见(英文名称为Far Infrared Technologies International Limited)是一家专注于红外光学技术研发及应用的企业。该公司的产品主要应用于安防监控、无人机、机器人、智能家居等领域。 关于"06. linux系统标准io实验"的实验资料包括了程序源码。在Linux操作系统中,标准I/O(Input/Output)库是用于进行文件读写和输入输出操作的一套API(Application Programming Interface)。标准I/O库提供了一系列函数,包括文件打开、读取、写入、关闭等操作,方便开发人员进行文件操作和输入输出。 这份实验资料中的源码,应该是用于展示和实践Linux系统标准I/O库的使用方法和技巧。通过编译和运行这些源码,可以了解如何使用标准I/O库来进行文件的读写和输入输出操作,包括打开文件、读取文件内容、写入文件等。 这些实验源码可以作为学习和实践Linux系统标准I/O库的参考资料。通过实际操作,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 总之,"06. linux系统标准io实验"的实验资料中的程序源码是用于学习和实践Linux系统标准I/O库的使用方法,通过编译和运行这些源码,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 ### 回答3: 华清远见-c0rtexa9资料中的程序源码目录为\linux应用实验源码\06. linux系统标准io实验\。这个实验中包含了一些关于Linux系统标准输入输出的代码示例。 在Linux中,标准输入输出是三个预先定义好的文件描述符,分别是0(stdin),1(stdout),2(stderr)。这些文件描述符与输入输出设备关联,比如键盘和屏幕。使用标准输入输出可以实现用户与程序之间的交互以及程序的输出显示。 在实验源码中,我们可以看到许多用于标准输入输出的函数,包括printf、scanf、getchar、putchar等。这些函数可以帮助我们进行输入输出操作。 在实验中,我们可以通过这些代码示例学习如何从标准输入读取用户输入,如何向标准输出显示结果。例如,可以使用scanf函数读取用户输入的数据,使用printf函数将处理结果输出显示。 通过实验中的代码示例,我们可以学习到如何处理标准输入输出的错误,如何进行格式化输入输出,如何使用缓冲区进行高效的输入输出等。 总之,华清远见-c0rtexa9资料中的\linux应用实验源码\06. linux系统标准io实验\中包含了一些关于Linux系统标准输入输出的代码示例,通过这些示例我们可以学习到如何进行标准输入输出操作,以及一些与之相关的技巧和注意事项。这对于学习Linux系统编程和开发应用程序非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值