c++ 笔记

1.std::cout/cerr

cerr只在终端输出 cout会在log输出

2.char** argv

二级指针 [1,2,3,4] argv存放首个地址

3.fstream/ofstream/ifstream

如果想以输入方式(只写)打开,就用ifstream来定义;
如果想以输出方式(只读)打开,就用ofstream来定义;
如果想以输入/输出方式来打开,就用fstream来定义。

4.seekg/ tellg/ ios.end/ ios.beg

file.seekg(0,file.end);
size = file.tellg(); 获取file的size

5. char a[size] /char *a = new char[size]

char *a = new char[5]; // 这个申请是在堆上面的,需要delete a
char a[5]; // 这个申请是在栈上的
栈不支持动态申请
堆支持动态申请
char * 与 char a[ ] 的本质区别:
当定义 char a[10 ] 时,编译器会给数组分配十个单元,每个单元的数据类型为字符。
而定义 char *s 时, 这是个指针变量,只占四个字节,32位,用来保存一个地址。
sizeof(a) = 10 ;
sizeof(s) = 4 ;

6. char char* char **

函数形参中int Sorce[]其实相当于int* Sorce,所以是指针而不是数组,不信你可以在函数内改变形参Sorce的值,而数组是不可以重新赋值的。C++是不接受数组作形参的。

char s1[10]; // char a[] = {“happy”}

s1[0] s1[1]等都是char

s1是char*,等同于&s1[0]

char*s2[10]; // char *a[ ] = {“China”,“French”,“America”,“German”}

s2[0] s2[1]等都是char*

*s2[0] *s2[1]等都是char,是s2[0] s2[1]指向的字符串的第一个字符

s2是char**,等同于&s2[0]

char**s3[10];

s3[0] s3[1]等都是char**

s3[0] s3[1]等都是char,是s3[0],s3[1]这些char**指针指向的那个char指针

**s3[0] **s3[1]等都是char,是*s3[0] s3[1]这些char指针指向的字符串的第一个字符

s3是char***,等同于&s3[0]

7. std::vectorstd::string

[‘A’,‘B’,…]

8. static inline (函数前)

static inline 内联函数 加速用

9. const(参数前)

参数前面有const : 只要整个函数不改变这个参数,则加上const,编译器可以并行处理加速

10. ->/.

定义一个结构体指针 stu *p; 一个结构体变量 stu q;
结构体指针p是指向一个结构体的,这个结构体没有名字,它指向的是一个结构体空间的首地址;如果需要使用这个结构体就必须malloc一个空间出来或者将一个具有空间的结构体的首地址赋予它;
结构体指针p,它本身是一个地址,指向某一块内存空间,如果你不给它分配空间代表这是一个野指针,访问的时候自然会出错了;
结构体变量q,在定义变量的时候,编译器就自动给变量分配了合适的储存空间;
比如 定义一个整形变量,int value;这时编译器就自动根据类型 int分配给value4个字节的空间;(32位下)
结构体指针访问成员变量的操作符是 ‘->’,结构体变量访问成员变量的操作符是‘.’

12. ~.c/.cpp .h/.hpp .cu

C中:
头文件后缀名: .h
源文件后缀名: .c
C++中:
头文件后缀名: .h, .hpp, .hxx
源文件后缀名:.cpp, .cc, .cxx, .C .c++
.cu : 用C/C++编写的,用于CUDA计算的源程序文件

13. ~.o/.a/.so

.o 编译的目标文件 .a 静态链接库 .so 动态链接库
联系和区别
相同点:链接库本身不是最终的执行程序文件,而是为其他执行文件提供服务的程序。如果把最终的执行程序文件比作一个汽车生产厂家,那么链接库就可以理解为零部件提供商 。
不同点:静态链接库在链接阶段就直接打包到最终的执行程序文件中,而动态链接库则是在程序运行时去链接库里面找需要的东西。
优缺点:显然,静态链接的库文件会导致最终目标程序文件体积膨胀,优点是编译之后就不受原来静态库文件的影响,即使原来的静态库被删除了都没关系;
而动态链接库可以保证文件体积较小,在升级程序时很方便,但缺点是库文件和主程序分开,如果库文件不存在(删除、移动或重命名等)了,则主程序文件找不到而出现运行时错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值