C++ 牛客网做题笔记【200题总结】
2017-04-03 09:23
267 查看
做了老半天,正确率只有60%~~~~~
1:a[2][3],&a+1指向的是整个数组之后的位置,a+1指向的是第二个数组的首位置,*a+1指向的是第一个数组的第二个位置
2:数组作用于函数的参数会退化为函数指针,所以将数组名传入函数再进行sizeof()就是指针的大小,而不是数组的大小了,指针32位为:4
3:sizeof()计算char a[] = "dasda" ,后还有个\0勿忘
4:char:-128~127,负数的表示方法为其补码
5:结构体的整体大小为其最大数据类型的整数倍,结构体中的每个元素的起始偏移地址要能被其类型大小整除,short:2,longlong:8,long:4
6:友元函数可以访问类中的私有成员
7:
16位机器:
char:1个字节
int: 2个字节
32位编译器:
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
9:对于全局静态变量,在函数内部是可以改变的,但是在函数内部新定义一个同名变量却不会影响到全局静态变量,新定义的变量作用域只在函数体内
10:类内的成员若不加限定符是private的,所以在定义构造函数时,前面不加public,编译器会报错
11:#define的处理(宏)是在预编译期间进行的,转换结束后再进行编译,不会占用程序运行时间,并且预处理命令可以放在程序的任何位置,一定注意#define,会在程序开始之前将代码中的相关替换
12:代码复用的最好办法是组合:组合定义:组合是在新类中以原有类的对象作为数据成员,继承:在不改变现有类的基础上,采用现有类的形式并在其中添加新代码。组合一般用于在新类中使用现有类的功能而不是它的接口。继承则是用于在新类需要向基类转化的情况(多态)
13:p是指向一个多维数组的指针,*(P+1)指的是第二个数组,*p+1指的是第一个数组的第二个元素
14:重载函数还可以在参数的顺序上不同
15:函数指针在定义时,等式右边的函数不加()括号,只需要函数名即可(或是函数名前加取址符&),加上括号反而成了函数的调用
16:递归函数,时间复杂度:O(n),n为递归次数,空间复杂度:调用帧栈
17:虽然C++中,float到double是可以进行的,编译器只会警告,也说明C++不是类型安全的
18:未定义行为指的是C语言变准未做规定的行为。同时,变准也从没要求编译器预判未定义的行为,总之一句话:未定义行为就是运行结果不确定的情况:
@使用越界数组 @使用为初始化的变量 @一个随便指的指针的读写
19:strcpy(),复制数组,以'/0'结尾 .strcat(),连接数组,前字符串的最后的NULL会被消除 .strcmp()str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
20:构造函数初始化时必须采用初始化列表的方式的有:
1:需要初始化的数据成员是对象
2:需要初始化const修饰的类数据
3:需要初始化引用成员数据
1:a[2][3],&a+1指向的是整个数组之后的位置,a+1指向的是第二个数组的首位置,*a+1指向的是第一个数组的第二个位置
2:数组作用于函数的参数会退化为函数指针,所以将数组名传入函数再进行sizeof()就是指针的大小,而不是数组的大小了,指针32位为:4
3:sizeof()计算char a[] = "dasda" ,后还有个\0勿忘
4:char:-128~127,负数的表示方法为其补码
5:结构体的整体大小为其最大数据类型的整数倍,结构体中的每个元素的起始偏移地址要能被其类型大小整除,short:2,longlong:8,long:4
6:友元函数可以访问类中的私有成员
7:
16位机器:
char:1个字节
int: 2个字节
32位编译器:
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
9:对于全局静态变量,在函数内部是可以改变的,但是在函数内部新定义一个同名变量却不会影响到全局静态变量,新定义的变量作用域只在函数体内
10:类内的成员若不加限定符是private的,所以在定义构造函数时,前面不加public,编译器会报错
11:#define的处理(宏)是在预编译期间进行的,转换结束后再进行编译,不会占用程序运行时间,并且预处理命令可以放在程序的任何位置,一定注意#define,会在程序开始之前将代码中的相关替换
12:代码复用的最好办法是组合:组合定义:组合是在新类中以原有类的对象作为数据成员,继承:在不改变现有类的基础上,采用现有类的形式并在其中添加新代码。组合一般用于在新类中使用现有类的功能而不是它的接口。继承则是用于在新类需要向基类转化的情况(多态)
13:p是指向一个多维数组的指针,*(P+1)指的是第二个数组,*p+1指的是第一个数组的第二个元素
14:重载函数还可以在参数的顺序上不同
15:函数指针在定义时,等式右边的函数不加()括号,只需要函数名即可(或是函数名前加取址符&),加上括号反而成了函数的调用
16:递归函数,时间复杂度:O(n),n为递归次数,空间复杂度:调用帧栈
17:虽然C++中,float到double是可以进行的,编译器只会警告,也说明C++不是类型安全的
18:未定义行为指的是C语言变准未做规定的行为。同时,变准也从没要求编译器预判未定义的行为,总之一句话:未定义行为就是运行结果不确定的情况:
@使用越界数组 @使用为初始化的变量 @一个随便指的指针的读写
19:strcpy(),复制数组,以'/0'结尾 .strcat(),连接数组,前字符串的最后的NULL会被消除 .strcmp()str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
20:构造函数初始化时必须采用初始化列表的方式的有:
1:需要初始化的数据成员是对象
2:需要初始化const修饰的类数据
3:需要初始化引用成员数据
相关文章推荐
- C++ 牛客网做题笔记【600题总结】
- C++ 牛客网做题笔记【1100题总结】
- C++ 牛客网做题笔记【700题总结】
- C++ 牛客网做题笔记【900题总结】
- C++ 牛客网做题笔记【400题总结】
- C++ 牛客网做题笔记【1000题总结】
- C++ 牛客网做题笔记【1200题总结】
- C++ 牛客网做题笔记【500题总结】
- C++ 牛客网做题笔记【800题总结】
- C++ 牛客网做题笔记【300题总结】
- C++ 牛客网做题总结
- 类成员C++笔记六:static类成员总结,以及利用C++类static成员实现单例模式
- C++学习笔记&总结
- C++总结笔记(十)常见容器--Vector
- C++ 和 汇编 混合编程幼儿园经验总结**持续更新** 学习笔记贴
- C++学习笔记14,private/protected/public继承,私有继承,保护继承,公有继承(五)(总结)
- C++总结笔记(五)友元函数
- C++ 总结笔记 <一>
- C++总结笔记(八)排序算法之快速排序
- C++总结笔记(七)排序算法之插入排序