C语言学习第二天

英文:
read:读,r字母
write:写,w字母
execute:执行,运行,x字母
directory:目录,d字母

1.自我介绍

2.计算机组成部分:硬件和软件
2.1.硬件
1)必要的三大件
1.CPU
核心的两大功能:
1.数据运算,例如:1+1=2
2.外设控制,从外设拿到数据(读数据,read)或者向外设发送数据(写数据,write)
问:何为外设?
答:除了CPU其他任何硬件
2.内存:用于暂存CPU计算时(1)或者计算之后的数据(2)
特点:数据可以进行无限的覆盖
缺点:掉电数据丢失(就是重启或者断电)
优点:数据的读或者写速度非常快(比CPU慢,比硬盘快)
3.硬盘(统称为闪存):用于永久性保存数据
特点:数据也可进行无限的覆盖
缺点:数据的读或者写操作太慢了,所以数据操作一般都要先从硬盘拷贝到内存
再从内存进行操作,这样速度能够提高不少
优点:数据永久性不丢失,也就是掉电数据不丢失
2)其余可选硬件
鼠标,键盘,显示器,显卡等

2.2.软件:三大部分
1)操作系统
功能:通过驱动程序来管理各种硬件和管理各种应用软件(CPU分配,内存分配等)
2)命令行软件(专业术语叫shell终端)
功能:接收到用户输入的各种命令,然后让CPU执行这些运行处理这些命令
例如:windows终端输入notepad命令,最终能够打开一个记事本
3)各种应用程序:QQ,吃鸡,喝农药,百度浏览器等

3.主流的操作系统
windows:微软
linux:开源(免费和付费),推荐三大主流linux系统:
ubuntu(推荐,64位,版本:18.04 ),fedora,kali(黑客最爱)
苹果:MAC IOS
安卓:本质就是linux
vxwork:付费(硬实时操作系统,以上linux,windows等都是软实时操作系统)
4.linux系统发展(设计思想参考unix)
开源免费
1991年正式发布
linux内核之父:linus
推荐linux发展视频:<>

5.linux系统特点
linux系统理念(信仰):一切皆文件
一切皆文件:在linux系统中,任何硬件外设都是以文件的形式存在,一个应用程序例如QQ访问
显示器,只需访问这个显示器硬件对应的文件即可
文件即硬件,硬件皆文件
问:linux系统中文件如何管理呢?
答:靠文件系统(仅仅是一个名词)来管理文件
不同的文件系统管理文件的方式方法不一样
例如:硬盘一般用NTFS文件系统一(管理的文件大小无限制)
U盘一般用FAT32文件系统(管理的单个文件不要超过4GB)
内存一般用SYSFS文件系统(管理的文件都是位于内存中,掉电丢失)

6.linux系统中跟文件和目录(也是一种特殊的文件,俗称文件夹)相关的概念
6.1.目录:能够包含其他目录和文件
6.2.根目录:文件系统中最上一层的目录,用"/“表示
也就是linux系统中所有的目录和文件他们都是位于”/“根目录下
例如:/home(语义:在根目录下有一个home目录或者一个home文件)
6.3.子目录:位于其他目录下的目录
例如:/home(语义:假如home是一个目录名,home就是根目录’/‘的子目录)
/home/tarena:假如tarena是一个目录名,tarena就是home子目录
其中第二个’/‘表示分割
6.4.父目录:子目录的上一层目录
例如:/home:根目录‘/’就是home子目录的父目录
6.5.当前目录(又称工作目录):当前正在使用或者所在的目录,用’.'表示
例如:./home:当前目录下有一个home目录或者文件
上一级目录:当前目录的父目录,用”…“表示
例如:…/…/:上一级的上一级目录
6.6.主目录:登录linux系统时,需要一个用户,linux系统给这个用户专门指定了一个专有的目录
此目录简称主目录,并且都是位于/home/目录下,用”~“表示
例如:登录linux系统的用户名叫tarena,tarena用户的主目录:/home/tarena
登录linux系统的用户名叫zhangsan,zhangsan用户的主目录:/home/zhangsan
6.7.路径:目录和文件的位置,又分两种:
绝对路径:以”/“开头的路径表示形式
例如:/home/tarena
相对路径:不以”/“开头的路径表示形式
例如:home/tarena或者./home/tarena或者…/…/
由衷建议:以后软件代码中最好写绝对路径
open(“my.txt”); //前提是程序运行之前必须先进入my.txt文件所在的目录下,否则打开open失败
或者
open(”/dev/my.txt");//爱在哪个目录下就在哪个目录下

7.掌握linux系统必要命令:
建议:通过输入各种命令替代图形界面操作方式
命令格式:命令名 选项
7.1)pwd:获取当前所在路径
7.2)ls:获取目录和文件的信息
形式1:
ls -lh //获取当前目录下所有的目录和文件的详细信息
形式2:
ls -lh 文件名 //获取此文件的详细信息
例如:
ls -lh /home/tarena/qw.c 得到以下信息:
-rwxrw-r-- 1 tarena tarena 70 Jun 25 16:36 qw.c
说明:
‘-’:表示此文件就是一个普通的文件
‘rwx’:表示当前登录linux的用户对此文件可以读(查看文件),可以写(向文件写入信息),可执行
‘rw-’:表示当前登录linux的用户所在的组对此文件可以读,可以写,不可执行运行
‘r–’:表示其他的linux用户对此文件可以读,不可写,不可执行
‘1’:表示硬连接数(不关注)
‘tarena’:表示当前登录linux系统的用户名
‘tarena’:表示tarena用户所在的组
‘70’:表示此文件大小为70个字节
“Jun 25 16:36”:文件的创建日期
‘qw.c’:文件名

7.3)clear:清屏命令
7.4)cd:切换路径:cd /home/tarena
7.5)mkdir:创建目录:mkdir -p /home/tarena/hello/hello1
7.6)touch:创建空文件:touch /home/tarena/hello.txt
7.7)rm:删除目录和文件: rm -fr /home/tarena/hello
7.8)cp:文件或者目录拷贝:cp -fr 源文件 新文件
cp -fr 源目录 新目录
注意:cp hello.txt hello/
分3种:
1.hello是一个目录并且存在,就是将hello.txt拷贝一份到hello目录下
2.hello是一个目录并且不存在,命令cp报错
3.hello是你想象的,你认为的目录但是不存在,并且命令形式:cp hello.txt hello 就是一个文件的拷贝
切记:只要是目录操作,建议最后一定加分隔符’/’,来区分是目录还是文件
建议每次输入命令,用TAB键来补全,也会顺便给你添加’/’
7.9)mv:移动,剪切

7.10)cat 命令:快速查看文件的内容
例如:cat hello.txt

7.11)echo命令:向显示器打印输出数据命令
例如:echo “我是大神"或者echo 我是大神
注意:此命令一般配合”>“和”>>"(统称重定向符)
例如:
cd /home/tarena/
touch hello.txt
echo 我是大神 > hello.txt 意思是:先将hello.txt文件内容删除,然后将新内容写入到文件
cat hello.txt
echo 我是小神 >> hello.txt 意思是:将新内容追加到文件的后面
cat hello.txt

7.12)find命令:到某个指定的路径下找文件或者目录
格式:find 路径 -name 要找的文件名
例如:find /usr/include -name stdio.h
语义:到/usr/include目录下找一个文件名为stdio.h这个文件

7.13)grep命令:到某个路径下的某个文件中搜索字符串
例如:grep “我是大神” * -Rn
语义:在当前目录下的所有文件中搜索我是大神字符串
“*”:表示全部文件
“-Rn”:到子目录下也同样搜索,并且打印字符串所在的行号

7.14)linux系统解压缩的三条终极命令:
linux常用的两种压缩格式:bz2和gz
压缩命令:
tar -jcvf 压缩包.tar.bz2 目录或者文件
tar -zcvf 压缩包.tar.gz 目录或者文件
解压缩:
tar -xvf 压缩包.tar.bz2 / 压缩包.tar.gz
例如:
cd /home/tarena/
mkdir hello
touch hello.txt
echo 我是大神 > hello.txt
cat hello.txt
echo 我是小神 >> hello.txt
cat hello.txt
mv hello.txt hello/
tar -jcvf hello.tar.bz2 hello/ //把hello目录压缩成hello.tar.bz2压缩包
tar -zcvf hello.tar.gz hello/ ///把hello目录压缩成hello.tar.gz压缩包
tar -xvf hello.tar.bz2
tar -xvf hello.tar.gz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言学习计划(60天) 第一周(7天) - Day 1:学习C语言基本概念和语法规则 - Day 2:学习C语言数据类型和变量 - Day 3:学习C语言运算符和表达式 - Day 4:学习C语言控制结构之if语句 - Day 5:学习C语言控制结构之switch语句 - Day 6:学习C语言循环结构之while语句 - Day 7:学习C语言循环结构之for语句 第二周(7天) - Day 8:学习C语言函数 - Day 9:学习C语言指针 - Day 10:学习C语言数组 - Day 11:学习C语言字符串 - Day 12:学习C语言结构体 - Day 13:学习C语言文件操作 - Day 14:练习使用C语言开发简单的控制台程序 第三周(7天) - Day 15:学习C语言内存管理 - Day 16:学习C语言动态内存分配 - Day 17:学习C语言预处理器 - Day 18:学习C语言宏定义 - Day 19:学习C语言枚举 - Day 20:学习C语言位运算 - Day 21:练习使用C语言开发简单的应用程序 第四周(7天) - Day 22:学习C语言递归 - Day 23:学习C语言排序算法 - Day 24:学习C语言查找算法 - Day 25:学习C语言数据结构之链表 - Day 26:学习C语言数据结构之栈和队列 - Day 27:学习C语言数据结构之树 - Day 28:练习使用C语言开发简单的数据结构应用程序 第五周(7天) - Day 29:学习C语言多线程编程 - Day 30:学习C语言网络编程 - Day 31:学习C语言图像处理 - Day 32:学习C语言音频处理 - Day 33:学习C语言视频处理 - Day 34:学习C语言游戏开发 - Day 35:练习使用C语言开发简单的图像、音频、视频处理程序和游戏 第六周(7天) - Day 36:学习C语言算法优化 - Day 37:学习C语言代码调试与测试 - Day 38:学习C语言代码规范和文档 - Day 39:学习C语言代码版本管理 - Day 40:学习C语言代码安全和防护 - Day 41:学习C语言代码性能优化 - Day 42:练习使用C语言开发高质量、高效率、高安全性、高可维护性、高可读性的程序 第七周(7天) - Day 43:学习C语言面向对象编程 - Day 44:学习C语言泛型编程 - Day 45:学习C语言函数式编程 - Day 46:学习C语言元编程 - Day 47:学习C语言并发编程 - Day 48:学习C语言反射编程 - Day 49:练习使用C语言开发高级编程范式的程序 第八周(7天) - Day 50:学习C语言扩展库和框架 - Day 51:学习C语言开源项目和社区 - Day 52:学习C语言开发环境和工具 - Day 53:学习C语言代码优化和性能测试工具 - Day 54:学习C语言代码检查和版本管理工具 - Day 55:学习C语言图形界面开发工具和框架 - Day 56:练习使用C语言开发高质量、高性能、高可维护性、高可读性、高效率、高安全性、高可扩展性、高易用性的程序 第九周(7天) - Day 57:学习C语言嵌入式开发 - Day 58:学习C语言物联网开发 - Day 59:学习C语言人工智能开发 - Day 60:练习使用C语言开发嵌入式系统、物联网系统、人工智能系统 总结: 通过60天的学习和练习,我们可以掌握C语言的基本语法和常用技巧,熟悉C语言的开发环境和工具,了解C语言程序设计的主要思想和方法,掌握C语言高级编程范式和开发技术,达到C语言程序设计的高水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值