一、编程环境
1、编程环境
采用虚拟机 linuxos(ubuntu)
2、Linux目录结构
/:表示根目录:linuxos的顶层目录,一切都从他开始,都在他之下
用户所在的路径是家目录(/home/linux64)
路径分为绝对路径和相对路径:
绝对路径:从根目录开始的路径 相对路径:相对于目前所在的路径
3、Linux常用命令
命令格式:命令 [选项] [参数]
注意:
- 【】表示可以省略 【选项】 :功能 【参数】:操作的对象
- 以上三者之间必须以空格隔开
1、终端
ctrl+alt+t:打开一个目录为家目录的终端
ctrl+shift+n:打开一个与当前路径相同的终端
2、清屏
Clear
Ctrl+l
3、 ls
Ls 路径:显示路径下的内容
Ls -a:查看当前路径下的所有文件(包含隐藏文件)
Ls -l:显示当前路径下的内容的详细属性
Ls -la:显示当前路径下的所有内容的详细属性
Ls Desktop:打印当前路径下的Desktop底下的内容
4、创建与删除
touch 文件名/文件路径:新建文件,一次可以创建多个
rm 文件名/文件路径:删除文件,一次可以删除多个
mkdir 文件夹名/文件夹路径:创建文件夹,可以同时创建多个
rmdir 文件名/文件路径:删除空文件夹,一次可以删除多个
rm -rf:删除文件夹(空与非空皆可删除),不提示,直接删除
rm -ri:删除文件夹,并挨个提问是否删除
5、 切换路径
cd 路径:切换路径(绝对路径/相对路径皆可)
cd :直接返回家目录
cd -:回到上一次操作的目录下
cp 源(文件/ -r 文件夹) 目标文件夹
6、mv
移动:mv 源文件/源文件夹 目标文件夹
重命名:mv 原来的名字 现在的名字
4、vim编辑器
Vim 文件名
如果文件存在:直接打开,进行编辑
如果文件不存在:创建文件,并打开编辑
三种模式
Vim 文件名 如果文件存在:直接打开,进行编辑 如果文件不存在:创建文件,并打开编辑
命令行模式:
命令行模式----------插入模式: i
命令行模式----------底行模式: shift+:
插入模式:
插入模式--------------命令行模式:esc
插入模式--------------底行模式:esc+shfit+:
底行模式:
底行模式-------------命令行模式:
esc 底行模式-------------插入模式:esc+i
底行模式:
w:保存
q:退出
Wq:保存并退出
q!:强制退出
Wq!:强制保存退出
Set nu:显示行号
Set nonu:撤销行号
命令行模式:
yy:复制
Nyy:复制n行
P:粘贴
dd:剪切(不粘贴:删除)
ndd:剪切n行(删除n行)
u:撤销
Ctrl+r:反撤销
5、gcc编译器
1、gcc 文件名 gcc hello.c
//默认生成可执行文件a.out
2、gcc 文件名 -o 可执行文件名 gcc hello.c -o hello
//生成指定的可执行文件hello 执行可执行文件:./可执行文件名
二、计算机的数据表示
计算机中数据分为数值数据和非数值数据,保存形式为二进制,非数值数据包括字符
ASCII码表:规定了每一个字符在计算机中对应的是哪八位二进制数
1、进制转换
- 其他进制转十进制:对应的位数乘以对应的指数次幂
- 十进制转其他进制:除以其他进制倒取余
- 二进制和八进制相互转换:
0---------------------000
1---------------------001
2---------------------010
3---------------------011
4---------------------100
5---------------------101
6---------------------110
7---------------------111
- 二进制和十六进制相互转换:
0-----------------0000
1-----------------0001
2-----------------0010
3-----------------0011
4-----------------0100
5-----------------0101
6-----------------0110
7-----------------0111
8-----------------1000
9-----------------1001
A-----------------1010
B-----------------1011
C-----------------1100
D-----------------1101
E-----------------1110
F-----------------1111
2、基本数据类型
关键字:系统预先定义好的,有特殊含义的,并且都是小写。不能重新定义!(32个)
数据类型:char、short、int、long、float、double、struct、enum、union、void
控制语句:if、else、while、do、for、switch、case、break、continue、default、goto、
存储类型:auto、static、extern、register
const:只读
return:返回函数
Signed:有符号数 Unsigned:无符号数
Sizeof: 计算所占内存空间的大小:(字节)//sizeof(数据类型),sizeof(变量名)
typedef: 给已有的数据类型起别名
volatile: 防止编译器优化
标识符:程序员自己定义的,一般用来定义变量名,函数名,类型名
1、由数字、字母、下划线构成
2、第一个不能为数字
3、不能和关键字重名 建议:定义变量(见名知意)
3、有符号数和无符号数:
unsigned:无符号数:只有正数
signed:有符号数:有正数,有负数:以补码的形式进行存储
有符号数有符号位:最高位来表示符号位:0表示正数1表示负数
注意:正数的原码,反码,补码相同
补码的补码就是原码
三、数据类型
1、基本数据类型
- 整型 int short long
- 浮点型 float double
- 字符型 转义字符:\n,\123,\x12 非转义字符:'a','b'
2、复合数据类型
- 数组
- 指针
- 函数
- 结构体
- 共用体
- 枚举
1、指针
2、函数
1、自定义函数
1、函数声明
返回值类型 函数名(形式参数列表);
注意有分号
2、函数定义
返回值类型 函数名(形式参数列表)
{
函数体;
}
3、函数调用
变量名=函数名(实际参数列表);
2、函数和指针关联
可以给函数传一个整型、字符型、浮点型的数据,也可以给函数传一个地址
交换数据地址:
#include <stdio.h>
void swap(int *pa,int *pb);
void swap(int *pa,int *pb)
{
int temp = 0;
pa = temp;
pb = pa;
pb = temp;
}
int main(void)
{
int a = 5,b = 6;
printf("swap before a = %d,b = %d",a,b);
swap(&a,&b);
printf("swap after a = %d,b = %d",a,b);
return 0;
}
3、数组
1、一维数组
每个元素的数据类型 数组名[元素的个数];
//定义一个长度为5的float数组
float scores[5]={0},{0}为初始化,{}内可输入每个数组的值
2、二维数组
每个元素的数据类型 数组名[元素的个数,此元素为数组][每个元素数组中的元素个数]
//定义一个长度为3的数组,该数组中的每个元素又是(长度为4的float)一个数组
float arr[3][4]={1,2,3,4}
3、数组指针
指针与一维数组的关系
指针与二维数组的关系
4、指针数组
指针(一维)数组
指针(二维)数组
定义一个长度为5的数组,该数组中的每个元素是char *
5、指针数组和数组指针的区别
3、数据类型的转换
隐式转换:(范围小到范围大)
int+float ----->float
unsigned+signed--->unsigned
强制转换:范围大到范围小
#include <stdio.h>
int main(void)
{
float f=12.34;
int i=0;
i=(int)f; //(类型名)变量名 对该变量进行强制转换
printf("i=%d\n",i);
return 0;
}
四、三大结构
- 顺序结构
- 选择结构
- 循环结构
1、顺序结构(标准输入输出函数)
1、scanf()函数
scanf("格式化符",地址列表)
2、printf()函数
printf("字符串+格式化符",变量名列表)
2、选择结构
1、单分支结构
if(条件为真)
{
语句
}
2、双分支结构
if(条件为真){语句1;}else{语句2;}
3、 多分支选择结构
swich()
{
case 1:
break;
case 2:
break;
defalt:
}
3、循环结构
1、whlie
(1).循环的初始条件while((2).条件判断){(4).循环体(3).条件更新}
2、for
for((1).循环初始条件(多个就逗号隔开);(2).条件判断;(3).条件更新(多个条件逗号隔开)){(4).循环体}
3、 do while
(1).循环的初始条件do{(4).循环体(3).条件更新}while((2).条件判断);
五、相关运算符
优先级:单算移(左移<<,右移>>)关与(&),异(异或^)或(或 |)逻条赋
赋值运算符
=:右边的值赋给左边
算数运算符
+,-,*,/,%
关系运算符
==,!=,<=,>=
逻辑运算符
&&、||、!,与或非
条件运算符
a>b?a:b