一、开发准备
- 常用命令:
创建文件:vi filename
保存文件::w
关闭文件::q
切换:i/a 可以从命令模式切换到编辑模式,esc可以从编辑模式切换到命令模式
拷贝:yy(拷贝一行)/yw(拷贝一个词)
粘贴:p
删除:dd/dw
光标移动:hjkl左下右上
跳到文件头:gg
跳到文件尾:G
移动到首行:^
移动到行尾:$
按单词移动:向前w/2w,向后b/2b
查找关键字:/key
查找与替换::%s/keyword/替换字/gc
多窗口::split(横向切成两半)/vsplit(纵向切成2半)
窗口间跳转:ctrl+ww(会在两个窗口直接进行轮训)/ctrl+w[hjkl]
二、基本类型:
-
short(2个字节16位)、int(4个字节)、long(4个字节)
-->非科学计算,建议用整型 float(4个字节,低精度)、double(4个字节,高精度)
char(1个字符,1个字节,a/b/c)
void(无符号型,使用指针的时候才用,指针可以理解为一个地址)
可以用printf打印:%d整型、%f表示浮点型、%c表示字符型,%p表示地址
三、变量与常量:
int a =1;//变量,可以再复制
const int b = 2;//常量,值不能改变了
-
内存管理:
内存管理.png
栈区内的内存是系统自动分配的,一般为4~8M,不会太大,执行一个方法的时候,系统会自动为他分配内存,然后将它的局部变量等一个一个的压入栈,方法结束后,再逐一弹出栈,这也就解释了局部变量是有范围的;
堆区中的内存需要调用malloc去申请,用完了之后要手动释放掉,不然会造成内存泄露;如果用了别人的指针,还会造成野指针‘’
分配内存:void* mem = malloc(size);
释放内存:free(mem);
四、指针(门牌号)与数组
指针就是内存地址 : void*(不关注类型)、char*
1.指针本身可以运算
2.指针所指的内容可以运算
3.函数指针:可以指向不同的函数,得到不同的结果
int add(int a,in b);//声明一个函数
int (*f)(int ,int);//声明一个函数指针,**参数和返回结果都要和原函数一样**
f = add;//将原函数的地址赋给指针f
使用:
f(3,5);
- 数组:从某个地址开始,连续的类型相同的空间
五、结构体:
struct st{
int a;//只能定义成员变量,以分号结尾
int b;//不能定义方法
};//注意这里有一个分号
使用:
Struct st obj;
obj.a = 10;
enum em{
red_color = 0,//以,分隔
blue_color, //后面的值递增
yellow_color //最后一个可以不要,
};
使用:
enum em et = blue_color;//值只能是枚举中的值
六、循环
//1表示永远为真
while(1){
....
}
七、文件操作
- 文件类型:
FILE* file
- 打开文件:
FILE* fopen(pahh,mode)
- 关闭文件:
fclose(FILE*)
FILE* file;//定义一个文件
file = fopen("1.txt","a+");//打开一个文件,a+表示没有文件就创建,有就在之前的文件后追加
fwirite("hello!",1,6,file);//写入文件
rewind(file);//把游标移到文件的开头
char buf[1024] = {0, };
fread(file,1,6,buf);//读取文件
fclose(file);//关闭文件