7.26笔记
Linux命令:
打开终端:ctrl+alt+T(当前路径)
ctrl+shift+n(家目录)
~:家目录
关闭终端:ctrl+d
exit
直接关闭
查看用户名:whoami
查看主机名:hostname
查看当前路径:pwd
查看当前路径下有哪些文件:ls -a 所有文件(包括隐藏文件)
-l 查看详细信息(读写权限等) r 读 w写 x执行 - 无
-d 递归显示
切换路径: cd 家目录
cd + 文件夹名 进入某一文件夹
cd . 当前路径
cd .. 上一级路径
cd - 返回上一级操作的路径
新建文件夹:mkdir + 文件夹名字
新建文件:touch + 文件名
删除文件夹:rmdir 文件夹名
rm -r 文件夹名
删除文件:rm -r 文件名
复制文件:cp 文件名 新建文件名(当前路径)
cp 文件名 目标路径
cp -r 文件夹
移动(剪切)文件:mv 文件名 目标路径
快捷键:
放大终端:ctrl shift +
缩小终端:ctrl -
历史命令:上下键
清屏:ctrl L
自动补全:tab
vi编辑器
三种模式:插入模式、命令行模式、底行模式
命令行—a i o—>插入模式—esc—>命令行模式—shift :—>底行模式
命令行模式:
复制:yy
删除:dd
撤销:u
反撤销:ctrl r
回到开头:gg
移末尾:G
回到行首:0
回到行尾:$
整理代码:gg=G
插入模式
底行模式
保存:w
退出:q
保存退出:wq
强制退出:q!
分屏:vsp
查找:/str
替换:s/str/str2 将光标所在行的第一个符合查找的内容替换
全部替换:%s/str/str2/g
取消高亮:nogl
显示行号:set nu
不显示行号:set nonu
进制转换
二进制 八进制 十进制 十六进制
十进制转二进制:1.短除法:除二取余
- 拆分法:拆成二的平方
二进制转八进制:一位八进制的数可以用三位二进制数表示
二进制转十六进制:一位十六进制数需要四位二进制数表示
练习
11001101010
八进制:03152
十进制:1642
十六进制:0x66a
11110110:
八进制:0366
十进制:246
十六进制:0xf6
词法符号
关键字 标识符 运算符 分隔符 标点符号
关键字:
分类:存储类型:auto static extern register
数据类型:char int long short float double signed unsigned
构造类型:struct union enum
选择类型:if else switch case default
循环类型:for while goto do break continue
其他:void typedef const sizeof return volatile
标识符
用于标识变量
命名规则:
1.由数字字母下划线组成
- 不能以数字开头
- 不能用关键字
- 见名知意
变量
概念:在程序运行当中会发生变化的量
定义:存储类型 数据类型 变量名
运算符
参与运算的符号
算数运算符 逻辑运算符 位运算符 关系运算符 赋值运算符 三目运算符
算数运算符:+ - * / % ++ --
逻辑运算符:&& || !
单目运算:只需要一个操作数
双目运算:需要两个操作数
三目运算:需要三个操作数
7.27笔记
截断法则
逻辑与中,前面位假,后面不运算
或,前面真后面不运算
位运算
对二进制补码进行操作
& | ~ ^ << >>
&(与):全1则1,有0则0
|(或):有1则1,有全0则0
~(按位取反):1->0 0->1
^(异或运算):相同为0不同为1
原码 | 反码 | 补码 | |
正数 | 二进制本身 | 本身 | 本身 |
负数 | 二进制本身 | 原码取反 | 反码加一 |
最高位是符号位
<< 操作的补码 左边丢弃0 右边补0
>> 右边丢弃 左边补0
置1公式:a|(1<
置0公式:a&(~(1<
关系运算符:
< > >= <= == !=
三目运算符·:
表达式1 ?表达式2:表达式3
判断表达式1是否成立,如果成立执行表达式2,如果不成立执行表达式3
运算符的优先级
单目运算符:!~ ++ --
算数运算符:+ / % + -
移位关系:<< >>
关系运算:> < >= <= == !=
位与运算:^ |
逻辑运算: && ||
条件运算:? :
赋值运算:= += -= *=
口诀:单算移动关与 异或逻条赋
单目运算,从右向左运算
标点符号:,;() {} []
分割符:换行 空格 tab
变量
在运行过程中会发生变化的量
定义格式:存储类型 数据类型 变量名
赋值方式:
- 在定义时赋值:int a=10;
- 定义之后再赋值:int a;
a=10;
变量的分类:
局部变量:定义于函数内部
全部变量:定义在函数内部
区别:
内部变量 | 全局变量 | |
定义位置 | 局部变量:定义于函数内部 | 全部变量:定义在函数外部 |
作用域 | 在声明函数中可以使用 | 全部可用 |
初始值 | 随机值 | 值位为0; |
存储位置 | 栈区 | 全局区 |
生命周期 | 和定义函数共存亡 | 和整个程序共存亡 |
数据类型
char 字符型 1个字节
int 整型 4个字节
short 短整型 2个字节
long 长整型 4个字节
float 单精度浮点型 4个字节
double 双精度浮点型 8个字节
常量
概念:
在程序中不会发生变化的量
分类:
1.字符型常量
用单引导引起来的字符型数据
只能包裹单个字符
2.字符串常量
多个字符拼接在一起 使用双引号引起来的
对于一个字符串来说字符串的个数是实际个数+1
sizeof():查看数据所占内存大小 返回值是所占内存的字节数
3.整型常量
4.浮点型常量
5.指数常量
3*10^3——>3e3
e前面可以是小数也可以是整数,但是e后面只能是整数
6.标识常量
宏定义:起标识作用(宏代替,宏替换)
定义格式:#define 宏名 常量或者表达式
命名规则1.数字字母下划线
- 数字不能开头
- 不能用关键字
- 见名知意
特点:只能单纯的替换 不可以进行运算
输入输出
-
- 按照字符输入输出
输入的是字符 输出的也是字符
get char putchar都是函数实现输入输出
函数三要素:功能 参数 返回值
getchar:
功能:从终端获取一个字符
参数:输入字符的ascii码值
返回值:一个整型数据,输入字符的ascii码值
2.按照格式输入输出
printf
功能:按照格式向终端输出
参数:format:字符串 按照字符串中的格式输出
返回值:输出字符个数
格式
"%d" int类型
"%f" float类型
"%lf" double类型
"%c" char类型
"%s" 字符串类型
"%#x" 十六进制的数
"%#o" 八进制的数
"%p" 地址
"%e" 指数
"%.n" 保留小数点后几位
"%m" 列宽
scanf
功能:按照格式从终端输入
参数:format:字符串 按照字符串中的格式输入
返回值:正确输入的个数
回收垃圾字符
- 空格
可以回收一个或多个字符(空格 回车 tab)
char a,b,c;
scanf("%c %c %c",&a,&b,&c);
printf("a=%c b=%c c=%c",a,b,c);
- %*c
只能回收一个字符
char a,b,c;
scanf("%c%*c%c%*c%c",&a,&b,&c);
printf("a=%c b=%c c=%c",a,b,c);
7.28
强制转换
int a=5;
float b;
b=(float)a/2;
分支语句
if(判断表达式){
语句块
}
else if(判断表达式){
语句块
}
else{
语句块
}
7.31
数组
概念:具有一定顺序的若干量的集合
定义数组:存储类型 数据类型 数组名[元素个数]
数组名:代表数组的首地址,地址常量,不可以被重新赋值,不能为左值,不可以进行++,--操作
数组中的每一项都是变量,称之为元素
数组的更新:
访问元素:数组名[元素下标] 下标从零开始(注 意 数 组 越 界 问 题)
特点:
- 定义数组的数据类型和后面要存储的数据类型相同
- 内存是连续的
- 遵循标识符的命名规则
- 下标从0开始,n个元素,下标是n-1
- 同一个函数中,数组名和变量名不能重名
分类:
一维数组 二维数组
一维数组
- 格式:存储类型 数据类型 数组名
- 访问元素:数组名[下标] 下标从零开始
- 数组名:数组首地址 不能为左值
- 初始化:
- 全部初始化
- 部分初始化
- 未初始化
引用:
- 先定义后引用
- 每一次引用只能用一个元素,可以用for循环遍历
- 引用时注意数组越界
- 打印数组元素地址,使用%p格式
- 引用时数组的内存地址是连续的
数组的大小:
- 元素的个数*数据类型的大小
- sizeof()
数组的元素个数:
- 数组的大小/数据类型的大小
- sizeof
清零函数:
- bzero
使用方法:
#include
void bzero(void *s,size_t n);
功能:将内存空间设置为零;
参数:s:需要清空空间的首地址
n:需要清空的空间字节大小
返回值:无
- memset
使用方法:s
#include
void memset(void *s,int c,size_t n);
参数:s:需要清空空间首地址
n:需要清空的空间的大小
c:将空间设置成的值 默认是0,设置成其他不准确
返回值:清空空间后的首地址
字符数组
概念:原来存放若干字符的集合(含字符串),数据类型是char类型
定义:在定义字符数组是,容易省略元素个数,需要注意是否越界
输入输出:
- for循环,打印格式%c
- gets
char *gets(char *s);
功能:从终端输入一个字符串
参数:s:字符数组的首地址
返回值:目标字符串的首地址
注意:使用gets时不关心数组越界的问题,使用时会报警告
- puts
int puts(const char *s);
功能:想终端输出一个字符串
参数:s:要输出的字符数组的首地址
返回值:输出字符的个数