vim编辑器的快捷键:
[yy] 复制光标所在行的内容
[nyy] 复制n行内容
[#l] 光标移到该行的第#个位置
[#x] 删除光标到该[#]的位置,x每按一次删除当前字符
[#X] 删除光标前[X]位置内容,X每按一次删除光标前一个字符
[#dd] 删除[#]行的数据,dd表示删除改行数据
[#G] 光标移动到[#]行行首
[ZZ] 保存并推出文件
[p] 粘贴
[u] 撤销
[ctrl+r] 反撤销一次
ubuntu 12.04 常用命令
初学ubuntu的时候每个初学者都会因为各种指令记不住而烦恼,因此我总结了一些初学常用命令:
- whoami 确认当前用户,例如:root权限用户
- adduser 添加用户,例如:adduser jerry
- su 表示进入用户,例如:su jerry(进入jerry)
- sudo apt-get install openssh-server 是ssh的安装命令
- cd 到达指定路径 ,例如:cd user/lib
- pwd 显示当前所在路径
- find 查找某文件所在路径,例如: find ../ -name text
- mkdir 创建文件,例如:mkdir text
- cp 文件拷贝,例如:cp -r 1st 2nd(将文件1st拷贝到2nd下)
- vim 创建可编程文件,例如:vim text.c
- rm 删除文件,例如:rm -r text
- ls 列出当前目录下文件
- ls -l或ll 列出当前目录下文件及其详细信息(包括创建时间,权限等)
- tar 压缩文件命令,例如:tar cvf text.tar text(将text文件压缩成text.tar文件) tar xvf text.tar(将text.tar文件解压到当前目录)
- shutdown -h now 或 init 0 关机命令
- reboot 重启电脑
- chmod 更改文件权限,例如:chmod 777 text(权限设置是八进制的,分为可读可写可执行以及用户范围)
- man 进入man手册(查阅命令行运用),例如:man ls
- ifconfig -a 查看所有网卡(主要查询ip地址)
- ctrl + c 快捷键,注释掉该行命令
以上的基本命令是初学者必须掌握的,也是最常用的,可能有遗漏,希望大家补充。
makefile语法
“=”
make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:
x = foo
y = $(x) bar
x = xyz
在上例中,y的值将会是 xyz bar ,而不是 foo bar 。
“:=”
“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。
x := foo
y := $(x) bar
x := xyz
在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。
给出一段完整Makefile逐句解释
CC = gcc
CXX = g++
ADD_CFLAGS := -Wall -g
CFLAGS := $(ADD_CFLAGS) $(CFLAGS)
CXXFALGS := $(ADD_CFLAGS)
LDFLAGS := $(LDFLAGS)
targets = test
.PHONY:all
all:$(targets)
test:FOL.o fun.o
$(CXX) $^ -o $@ $(LDFLAGS)
FOL.o:FOL.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
fun.o:fun.c fun.h
$(CC) $(CFLAGS) -c $< -o $@
.PHONY:clean
clean:
$(RM) $(targets) *.o
注释:
CC表示gcc,CXX表示g++
ADD_CFLAGS是加入C的标志,-Wall是所有警告.....还有很多标志符号
CFLAGS,CXXFLAGS分别表示C和C++的符号[&ADD_CFLAGS]表示则表示引入[ADD_CFLAGS]所表示的东西
LDFLAGS表示连接库,如果不连接就按上面写
targets表示目标文件,最后生成文件为test
.PHONY是伪目标,个人理解是所修饰的内容编译器会智能判断,可以防止在Makefile中定义的只执行命令的目标和工作目录下的实际文件出现名字冲突,另一种是提高执行makefile时的效率。
test:FOL.o fun.o
目的文件:依赖文件1 依赖文件2 ... $@
目标文件,$^
所有的依赖文件,$<第一个依赖文件。
注:针对大型的工程自己去写Makefile显得不太现实,所以linux提供的有生成Makefile的工具,但如果用在小的项目中过程很复杂(不如自己写Makefile)。
函数模板
#include <iostream>
using namespace::std;
template <typename T>
T abs(T x)
{
return x<0?-x:x;
}
int main()
{
int a=1;
float b=-1.35;
double c=-3.1;
cout<<abs(a)<<endl;
cout<<abs(b)<<endl;
cout<<abs(c)<<endl;
return 0;
}
类、对象、
类
类是创建对象的模板和蓝图;类是一组类似对象的共同抽象定义
对象
对象是类的实例化结果;对象是实实在在存在的,代表现实世界的某一事物
对象的三大特性
行为:对象能干什么
状态:对象的属性,行为的结果
标识:对象的唯一身份