n:next
std:standard:标准
h:head:头部
include:包含,包括
main:主要的,最重要的,入口
print:打印
format:格式
printf=print format=按照一定的格式进行打印输出
return:返回,结束
i:input:输入
o:output:输出
回顾:
1.计算机组成部分
硬件
三大件
CPU
数据运算和操作外设
内存
暂存数据,速度快,容量小
硬盘
永久性存储数据,速度慢,容量大
外设
可有可无
软件
操作系统
驱动控制外设,分配CPU资源和内存资源等
shell终端程序
接收用户输入的命令并且执行命令
应用程序
QQ等
2.主流操作系统
windows/linux/苹果/安卓/vxworks
3.linux系统的发展
开源/1991/linus/视频:the code linux/www.kernel.org(官网)
4.linux系统理念(信仰):一切皆文件
访问硬件必须先找到对应的文件
访问文件就是在访问硬件本身
5.linux系统管理文件:文件系统
不同文件系统管理文件方式不一样
明确文件系统中相关概念:目录,文件,路径
根目录'/'/子目录/父目录/当前目录'.'/上一级目录'..'/主目录'~'
文件:记录了一堆的数据信息
路径:绝对路径(首选)和相对路径
6.linux系统命令
pwd/clear/ls/cd/mkdir/touch/rm/cp/mv/echo(>/>>)/
grep/cat/find/tar/whoami(查看当前用户名)
--------------------------------------------------------------------------------------------------------------
7.掌握大名鼎鼎的linux编辑器软件:vim
7.1.常用的开发编辑器软件:vim,vscode,sublime等
重点放在vim
7.2.vim命令格式:vim 文件名 //打开一个文件
7.3.vim三种模式:可视模式,编辑模式,命令行模式
可视模式:只能看不能编辑
编辑模式:可以输入各种文本信息
命令行模式:给vim输入各种控制命令
7.4.vim三种模式之间的转换:
明确:第一次刚执行vim命令之后,首先进入可视模式
可视模式-----按i键或者o键或者a键---->编辑模式
编辑模式-----按ESC键----------------->可视模式
可视模式-----按shift+:组合键--------->命令行模式
编辑模式-----先按ESC进入可视模式--->按shift+:组合键--------->命令行模式
7.5.vim命令行模式下相关的命令
w:保存文件
q:不保存并且退出vim
wq:先保存后退出vim
q!:强制直接退出,不保存文件
%s/原来内容/新内容/g:将文件中原来的内容全部替换成新内容
n1,n2s/old/new/g:将文件从n1行到n2行所有的old内容换成new内容
例如:6,9s/小/大/g:将文件的第6行到第9行的小替换成大
! linux命令,例如:! ls :在vim命令中来执行linux的其他命令,再例如:! cd /home/tarena
案例:练习vim,打开一个新文件,随意输入各种信息
7.6.vim快捷键(前提是先切换到可视模式下,然后再各种快捷键)
1)方向键以后不要用上下左右,而是用:h(左)j(下)k(上)l(右)替换
2)行选中:shift+v然后按hjkl方向键选中
列选中:ctrl+v然后按hjkl方向键选中
3)复制:y键
4)粘贴:p键
5)剪切:x键
6)撤销:u键
7)撤销之后由反悔:ctrl+r
8)保存退出:ZZ键
9)先进入命令行模式执行:sp 文件名,实现上下分屏
先进入命令行模式执行: vs 文件名,实现左右分屏
目的:一个屏幕上可以同时编辑多个文件
屏幕切换快捷键:ctrl+ww
10)搜索:先按/然后再后面输入要搜索的信息,然后按小n键表示向下搜索,按大N键表示向上搜索\
11)自动补全:ctrl+n,先输入开头的一个字符或者多个字符,然后按ctrl+n自动补全后面的内容
12)自动格式化文本内容,让代码变得整齐划一,好看:先行选中然后按=键
13)跳转到文件的末尾:G键
14)跳转到文件的开头:gg键
15)跳转到指定的某个一行:先进入命令行模式,然后输入行号即可,例如:14,跳转到14行
16)复制某几个单词,字母:先按v键,然后按方向键选中单词,字母,最后按y键复制或者按x剪切,然后按p键粘贴
--------------------------------------------------------------------------------------------------------------
8.C语言
8.1.C语言定义:它是计算机编程的一种语言,除了C语言,还有C++,java,python等
不管是哪种编程语言,他们都是实现人和计算机交流的
利用C语言能够编写一个程序,让计算机工作,例如:像显示器打印输出一段话
例如:中国人<-----汉语------->中国人
中国人<-----汉语/英语-->美国人
人<---------C语言/C++语言等---->计算机
8.2.C语言发展
C语言之父:丹尼斯里奇
C语言经典书籍:<
1989,C89标准诞生
1999,C99标准诞生,基于C89引入了一些优秀特性
8.3.人生的第一个C语言程序,C语言基本编程框架
具体实施步骤如下:
1)编写C程序
cd /home/tarena
mkdir stdc
cd stdc
vim helloworld.c 添加输入以下内容:
/*
这是我的第一个程序
好开心啊
*/
//这是我的第一个程序
//好开心
#include
int main(void)
{
printf("hello,world\n");
return 0;
}
保存退出
程序说明(C语言编程规矩):
1. C程序的文件分两类:源文件和头文件,他两本质一样
源文件都是以".c"后缀结尾
头文件都是以".h"后缀结尾
注意:任何C程序必须有一个源文件,可以不用自己写头文件
2. #include
不可随意使用),如果include前面加#,表示要包含一个头文件
stdio.h:就是标准C语言的一个头文件(大神已经帮你写好了)
此文件位于linux系统的/usr/include/目录下
问:这一对<>什么意思呢?
答:如果是<>,表示将来让gcc编译器到/usr/include目录下找stdio.h头文件
如果是"stdio.h",表示将来gcc先到当前目录下找stdio.h,如果找不到再 去/usr/include目录下找
结论:包含头文件的两种写法:
#include
#include "stdio.h"
3.C程序只能有一个主函数叫main,并且main函数的前面必须是int
并且main函数后面要跟一对圆括号,括号里面写void
由于main函数是自己编写的,所以还要跟一对{},{}包含的内容就是main函数
将来给CPU运行的命令,也就是程序的执行必须从main函数开始
然后CPU从main函数依次一条条的向下执行
4.printf是一个函数,但是此函数是标准C语言已经写好的(大神写好的),咱们直接使用即可
为了使用此函数, 必须包含头文件:stdio.h
注意:'\n'表示换行
5.main函数中的每条语句必须跟分号来表示此条语句的结束
6.main函数最后执行return返回也就是让CPU执行到这程序就结束了
7.C程序的注释(代码的解释说明)两种方式:
一对/*注释的内容*/:优点:多行注释,缺点:不能嵌套
一对//后面跟要注释的内容:优点:可以嵌套,缺点:只能单行注释
2)编译C程序,执行以下命令:
cd /home/tarena/stdc/
gcc helloworld.c //编译程序
ls -lh //查看a.out的详细信息,此a.out就是生成最终二进制可执行程序(计算机能够执行的一个文件)
-rwx.... a.out
./a.out //运行a.out这个程序,将来CPU根据程序的要求做相关的动作
程序编译说明:
1.gcc:它是一个编译器,类似翻译官,将源文件helloworld.c翻译成a.out计算机能够识别
能够看懂的可执行文件
gcc使用命令格式:gcc 源文件 (变态的编译方法),此种写法最终生产的文件都叫a.out
问:如果不想取名叫a.out,怎么办呢?
答:搞清楚gcc工作流程
8.4.gcc编译器特性
1)功能:将源文件翻译成可执行文件
2)gcc工作要经过三步骤(目前了解即可):
1.先预处理
就是将别人的头文件内容全部拷贝到当期源文件中
例如:#include
2.然后编译
就是将预处理之后的源文件翻译成可执行文件(计算机对此文件是能够识别的)
3.最后链接
就是将别人写好的函数代码,例如printf,加载到自己编写的文件中,最终翻译成CPU
能够执行运行的可执行文件
问:以上三步骤如何分步骤实现呢?
答:只需gcc的相关的选项即可完成
3)掌握gcc的常用选项:
-o: 后面跟要生成的文件
-E:进行预处理
例如:gcc -E helloworld.c -o helloworld.i
语义:对helloworld.c进行预处理,生成预处理以后的文件helloworld.i
-c:只编译不链接,只是把自己的源文件生成可执行文件,此过程不会将别的函数加载过来
例如:gcc -c -o helloworld.o helloworld.i
语义:将预处理文件helloworld.i只编译不链接生成可执行文件helloworld.o
helloworld.o此文件CPU识别,但是不能运行,因为还没有加载别人的函数
案例:演练gcc的三种使用方式
实施步骤如下:
cd /home/tarena/stdc/
ls helloworld.c //查看文件是否存在
第一种编译方式:流氓方法
gcc helloworld.c //生成a.out
./a.out
第二种编译方式:分步骤编译
gcc -E -o helloworld.i helloworld.c //先预处理
vim helloworld.i //挑战看看此文件,只看文件的最后的内容(是自己编写的)
gcc -c -o helloworld.o helloworld.i //然后只编译不链接
gcc -o helloworld helloworld.o //最后将helloworld.o进行链接操作生成最终的可执行文 件helloworld
./helloworld
第三种编译方式:一步到位
gcc -o helloworld helloworld.c
注意:此方法也就是将方法2进行合并了!
8.5.详解printf函数
1)此函数属于标准C的函数,直接使用即可
但是需要包含头文件stdio.h
2)此函数的使用语法格式:
printf("输出的内容\n");
例如:
printf("hello,world\n"); //输出hello,world信息之后再加一个换行
printf("hello,world"); //只输出hello,world信息,但是没有换行
printf("%d, %d\n", 1, 2); //输出1,2
说明:%d:占位符
第一个%d给数字1占位,第二个%d给数字2占位
--------------------------------------------------------------------------------------------------
9.详解内存特性和概念
1)内存功能:用于暂存程序和程序中的各种数据(例如:1,2,3等)
问:为何不用CPU和硬盘呢?
答:CPU存的数太少了
硬盘速度太慢了
所以选择内存
程序玩的不是程序,玩的是内存
2)内存相关的概念
字节(俗称格子):就是将内存划分为一块一块的区域,好比划分为一个一个格子一样
每块区域简称字节,能够存储程序中的数据,也就是内存中最小的
存储单位就是字节
地址:就是给内存的每个字节指定一个编号,从0开始,类似给每个房间指定一个房间号一样
此编号简称地址
存储区:就是一个字节或者多个字节组成的存储区域,简称存储区
问:为何有这个概念呢?
答:比如现在有一个数大小为300亿,明确告诉你一个字节肯定存不下300亿这个数
所以需要4个字节的内存来存储300亿这个数,而这个4字节的内存区域构成了
存储区
首地址:存储区的第一个字节的地址
内存条
* * * * **** ....
0 1 2 3 4567 ....
首地址:4