Vim 基本操作
…
拷贝:yy/yw
粘贴:p
删除:dd/dw
光标移动(命令行模式): h(左移)/j(下移)/k(上移)/l(右移动)
跳转到文件头:gg
跳转到文件尾部:G
跳转到行头:^
跳转到行尾:$
查找和替换:
查找关键字(命令模式下):/关键字
查找与替换: :%s/关键字/替换字/gc
显示行号:set number
指定范围替换:21,23s/Magic/Joy/gc
多窗口:
分窗口:
split 横向分屏
vsplit 垂直分屏
窗口键跳转:
crtl+w/
ctrl+w+[h/j/k/l]
C开发
1.HelloWorld
#include <stdio.h>
int main(int args,char* arg[])
{
printf("HellloWorld!\n");
}
2.常量和变量
…
常量通常使用const 修饰符
const int length = 5;
3.指针
物理意义:本身就是一个内存地址,除了可以改变本身内存地址,也可以改变存储的内存地址的值
函数指针:
int sum(int a,int b)
{
return a+b;
}
int main()
{
int (*fun)(int ,int);
fun = sum;
int sum=fun(3,4);
}
4.文件操作
文件类型:FILE* file
打开文件: FILE* fopen(path,mode)
关闭文件:fclose(FILE*)
5.编译器
GCC:在Linux下使用
CLANG:在MAC下使用
基本命令格式:gcc/clang -g -O2 -o test test.c
-g :输出文件中的调试信息,但不调试
-O:对输出文件做指令优化,-O2优化
-o:输出可执行文件的名字
-I:指定头文件目录
-L:指定库文件位置
-l:指定具体使用哪个库
6.编译过程
(1)预编译
加载头文件,和源代码合并在一个文件中
(2)编译
(3)链接,动态/静态链接
7.编译举例
(1)编译一个文件为静态库
比如有一个c文件中,只有一个add方法(需要配套的.h)
gcc -c add.c
执行完毕后会生成一个.o
ar rcs libmylib.a add.o
执行完毕后会生成一个静态库libmylib.a
编写引用此静态库的文件
gcc test.c -o test -L . -I . -lmylib
(2)编译一个文件为动态库
比如有一个c文件中,只有一个add方法(需要配套的.h)
gcc add.c -fPIC -shared -o libadd.so
执行完毕后会生成一个So
编写一个测试文件testShareLib.c
gcc testShareLib.c -L . -ladd -o test
链接动态库
输入ldd test或者直接指定./test都会提示找不到这个libadd.so库
此时需要将libadd.so 移动到/usr/lib/下
再执行就成功运行了
8.调试器
Linux gdb ,Mac lldb
前提:编译输出的程序需要-g
调试信息包含:指令地址、对应源代码以及行号
gdb\lldb 命令
设置断点:b
运行程序:r
单步执行:n
跳入函数:s
跳出函数:finish
打印内容:p