【笔记】选择题总结

day1:

1.用printf打印时
printf("%5s\n", "computer");	//computer
printf("%5.3s\n", "computer");	//  com			占5个位置,前两个空格
printf("%-5.3s\n", "computer"); //com			占5个位置,后两个空格
printf("%5s\n", "qwe");			//  qwe			占5个位置,前两个空格
printf("%5.1s\n", "qwe");		//    q			占5个位置,前4个空格
printf("%-5.1s\n", "qwe");		//q				占5个位置,后4个空格
d	十进制有符号
o	八进制有符号
u	十进制无符号
x	十六进制无符号(小写显示abcdef)
X	十六进制无符号(大写显示ABCDEF)
F/f	浮点数
c	字符
s	字符串
p	指针的值
输入 0123:八进制 0x123:十六进制

2.
char ax[] = "abc";				//sizeof(ax) == 4;
char ay[] = { 'a', 'b', 'c' };	//sizeof(ay) == 3;
char *sx = "abc";				//指向字符常量区,不可修改
char *sy = "abc"; 				//sx 和 sy 所指地址一样

3.inline
	1.内联函数只是建议编译器可以作为内敛使用,具体还得看编译器
	2.头文件中包含内敛函数时,要把函数声明和定义放在一块,并且函数定义之前必须加inline关键字,如果只在函数声明前放inline是没有作用的
	3.inline具有文件作用域,多个文件同名的inline函数的函数实现体必须相同

day2:

1.继承
	类对象生命周期结束之后,先调用派生的析构再调用基类的析构,不管析构是否显示定义
2.迭代器
	在用erase删除迭代器之后,迭代器失效,要接收返回值,自动指向下一个元素
3.指针
	int* a[5]:指针数组:有五个元素,且每个元素都是int类型指针
	int(*p)[5]:数组指针:指向数组的指针,数组有5int类型元素
	int* p = (int*)(&a + 1):指向数组a的下一个数组首地址
4.this
	this指针的使用:保证每个对象中都有独立的数据成员,但共享处理这些数据的代码(函数)

day3:

 1.strcat:把src的字符串拼接到str后面,返回值:str地址
   strcpy:把src的字符串拷贝到str中,可能会覆盖掉一些内容
 	char str[15] = "qwer";const char* ptr = "asdf";
	strcpy(str, strcat(str + 2, ptr));
 	结果:str[] = "erasdf"
 2.strcat(str + 2, ptr + 2);表示从ptr起始的第三个字符开始拷贝,拼接到str后面,并返回str第二个字符的地址
 
 3.string中的find返回下标
   unordered_map的find返回迭代器
   
 4.new Class[5]动态创建出来多个对象,在析构时应该调用delete[],否则只会调用一次析构资源释放不完全
 	例如:A* a = new A[5];delete[] a;
 5.只要最顶层的基类,中函数有virtua修饰,则不管继承多少次,相同函数原型的都完成了重写
   多态的两个条件:基类的指针或者引用,对基类的函数进行了重写

day4:

1.虚函数,递归等不能被设置成内敛函数,虚函数要通过虚表获取函数地址调用,递归要进行函数压栈,而内敛函数是在函数调用处展开。

2.asc码:
0~9 -> 48~57
A~Z -> 65~90
a~z -> 97~122

day5:

1.++i返回的是i,i++返回i的值,printf输出时会从右边往左边开始计算
  计算完毕的先放到缓冲区,遇到\n或者缓冲区满了才进行输出
	int i = 1;
	printf("%d %d\n", i++, i++);	//21 i==3
	printf("%d %d\n", ++i, ++i);	//55 i==5
	printf("%d %d\n", ++i, i++);	//75
	printf("%d %d\n", i++, ++i);	//89
2.宏和constinline的区别:
	宏:在预处理阶段进行宏替换,不会进行类型检测
	const:在编译阶段进行替换,会进行类型检测
	inline:在编译阶段进行类型检测,如果编译器使用内联属性则在调用出展开
3.基类声明了虚函数之后,被继承到子类中,子类不用同函数原型的即使不用virtual修饰也能构成重写
4.对象中的虚表地址可以被修改,但虚表的内容不能被修改,虚表在编译阶段生成存放在代码段

day6:

错误输出流对象 cerr,不具备缓冲区,因为出现错误时系统应该立即提示用户
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值