移动命令
1、mv 文件名 路径 :将文件移动到指定的路径下
2、mv 文件夹名 路径: 将文件夹移动到指定的路径下
3、重命名:
mv 原文件名 新文件名
mv 源文件夹名 新文件夹名
sudo 命令
作用:临时的获取到root权限
sudo mkdir aa :以root用户身份创建的aa文件夹
快捷操作:
方向键上下键:上下查看之前使用过的命令
补全键:Tab
功能:自动补齐
在输入文件名或目录时,只需要输入该文件名的前几个字符,然后按下Tab键就能将文件名自动补全,如果类似文件名有多个,再按一次Tab键,会显示所有类似的文件名。
history:查看之前使用过的所有命令
ctrl+shift+'n' - 打开一个同路径的新终端
ctrl+'l' :清屏 clear
vi编辑器
vim三种工作模式
命令模式
插入模式
底行模式
命令模式下的快捷操作
h:向左移动
j: 向下移动
k: 向上移动
l: 向右移动
b: 移动到当前单词的开始
e: 移动到当前单词的末尾
w: 移动到下一个单词
gg: 文件头
G: 文件最后一行
0: 行首(零)
$: 行尾
G$:文件尾
gg=GG
复制剪切粘贴操作
yy 复制 dd 剪切 p 粘贴
多行复制/剪切:nyy / ndd
错误撤销恢复:u
取消撤销:Ctrl + r 恢复即可
底行模式下的操作:
w 路径和文件名,即可以指定名称保存到指定路径
wq:保存并退出
q!:强制退出
跳转到对应的行号
:n :跳转到第n行
分屏显示
:vsp 路径/新文件名字 (左右分屏)
:sp 路径/新文件名字 (上下分屏)
Ctrl + ww :切换分屏窗口
VScode
code 目标文件名
程序讲解:
#include<stdio.h>:标准I/O头文件,下文中的printf需要使用这个文件
main():主函数,一个程序的入口。一个程序有且只有一个main()函数
int:代表主函数的返回值类型是int型
printf():格式化输出,将括号内的内容打印到显示器上,打印字符串需要用双引号""引上
return 0;:配合主函数类型使用,一般来说返回0的程序表示程序运行成功
return -1; 返回负数代表代码执行失败了
c语言每句话结束都要使用;
C语言如何成为计算机能够理解执行是机器指令
gcc编译器:
定义:讲C语言代码转换成CPU能够识别的二进制指令。
gcc指令的格式:
gcc 【options】 【filenames】
gcc编译流程分析
1. 预处理:展开头文件、删除无用注释
gcc -E hello.c -o hello.i
2. 编译:检查语法错误,如果有问题报错,如果没有问题就生成汇编文件
gcc -S hello.i -o hello.s
3. 汇编:讲汇编文件转化为二进制文件
gcc -C hello.s -o hello.o
4. 链接:链接库文件,最终生成可执行文件
gcc hello.o -o test
./test
也可以直接:gcc hello.c -o hello
./hello
gcc hello.c 默认生成a.out可执行文件
./a.out
C语言32个关键字
定义:对编译器具有特定含义的标识符,是标识符的一个特殊的集合。C语言内所有的关键字都是小写。
1、存储类型:决定变量存放的位置
auto自动型 static静态型
extern外部引用 register寄存器
2、 数据类型:决定变量所占的空间大小
char(字符型1)、int(整型4)、short(短整型2)
long(长整型4)、 float(单精度浮点类型4)、double(双精度浮点8)、
signed(有符号)、unsigned(无符号)
3控制语句:
if、else、switch、case、default、break、while、for
do、goto(跳转)、continue、return
4)构造数据类型:
struct(结构体)、union(共用体)、enum(枚举)
5)杂项:
const(常量化)、
sizeof(计算数据所占空间大小)、//sizeof(数据类型/变量名)
typedef(重定义)、
void(空,修饰指针,不能修饰变量;作为函数的返回值;作为函数的参数)、
volatile(防止被编译器优化)
标识符
标识变量、函数,用户自定义的项目名称
命名规则:
1、 由数字、字母、下划线组成
2、 开头不能是数字
3、 不能和关键字重命
4、 见名知义
C语言的字符集
C语言的基本符号可以分为4类:
● 英文字母:大小写26个,共52个;
● 阿拉伯数字:0-9共10个数字;
● 下划线与分号;
● 特殊符号;
运算符:
● 算术运算符:+、-、*、/、%、++、--
● 关系运算符:<、>、>=、<=、==、!=
● 逻辑运算符:&&、|| 、!
● 位运算符:& | ~ ^(异或) >> <<
● 条件运算符:? :
● 分隔符: () [] {} . , ;
变量
1、 概念:在程序运行的过程中会发生变化的量。
2.定义变量格式:
[存储类型] 数据类型 变量名;
全局变量:
定义在函数外部,存放在静态区。定义未初始化初始值为0.
一般全局变量少用。
作用于全局
局部变量:
定义在函数内部,默认是auto型,存放在栈区
定义时没有赋初始值,初始值为随机值。
作用于函数内部
区别:
局部变量 全局变量
定义位置: 定义在函数体内部 定义在函数体外部
初值不同: 未赋初值时,值为随机值 未赋初值时,值为0
存储位置: 栈区 全局区
生命周期: 随所在函数共存亡 随程序共存亡
作用域: 作用于函数体内部 作用于整个程序
变量的实质
一个变量实质上代表了内存中某个存储单元。在程序中,变量a就是指用a命名的某个存储单元,用户对变量a进行操作就是对该存储单元进行操作;给变量a赋值,实质上就是把数据存入该变量所代表的存储单元中
常量
常量主要分为两类:
【1】直接常量:直接引用的数字等;
字符常量 ‘A’ , ‘a’
整型常量 10 100 0b1101 0664 0xaf
实型常量 3.14 5.69
字符串常量 "hello world""100"
【2】符号常量:使用标识符来代替一个数字(常见的:宏定义常量 和 常变量)
宏定义
#define 也是C语言预处理命令的一种,被称为宏定义指令
#define 宏名 宏值
使用宏定义的优点:
1、 给数值赋予一定含义,增强代码可读性
2、 减少代码的编写量
3、 可以做到 “一改全改”
练习:
1、 使用宏定义PI来定义3.1415926,计算圆的面积,半径的值通过终端输入。
按格式输入输出
int printf(const char *format, ...);
功能:按照指定格式向终端输出
参数:format
字符串 要输出的内容 "hello world\n"
"%d" int printf("%d",变量名);
"%c" char
"%f" float
"%lf" double
"%s" 字符串
"%p" 地址
"%#x" 十六进制
"%#o" 八进制
"%e" 指数
"%u" 无符号
"%-m.nf"
-:左对齐,默认右对齐
m:位宽,m>实际位宽,按m位宽输出
m<实际位宽,按实际位宽输出
.n:保留小数点后n位
...:表示不定参数,参数可以不止一个
返回值:输出字符的个数
int scanf(const char *format, ...);
功能:按照指定格式从终端输入
参数:同printf
int a;
scanf("%d",&a);
printf("%d\n",a);
返回值:正确输入数据的个数
当第一个数据输入错误时,直接返回0
man手册:帮助手册
1. shell命令
2. 系统调用函数
3. 库函数
退出: q
2、租船问题。
写程序计算游客需要付的租船的费用。租船每小时30元,押金100元。游客输入租船时间,计算出租船费用。租船费用=时间*每小时钱数+押金。要求押金与每小时钱数使用宏定义
3、从键盘输入5个学生的成绩(整数),要求输出总成绩(整数)和平均成绩(小数)