您的位置:首页 > 编程语言 > C语言/C++

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:需要初始化引用成员数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息