C++ 牛客网做题笔记【500题总结】

来源:互联网 发布:记录工作时间的软件 编辑:程序博客网 时间:2024/06/01 15:06

1:要判断一个双精度的浮点数double是否等于0,应使用abs(f) <= 1e^15而不是 f == 0,

2:内存中的全局域的常量字符串放在文字常量区

3:JAVA不使用指针,被封装起来了,不支持头文件,不支持宏定义,JAVA可以动态分配内存,Java是单继承的,只能有一个父类,不支持多继承;C++比较适合一些底层的处理,Java比较适合开发应用;C++的速度理论上比JAVA快

4:C++的格式化输入输出都定义在iomanip.h头文件中

5:异或的运算符^不是幂次方,不同为1相同为0

6:若想要一个类内函数可以改变类内变量,可以将函数定义为const,或者将变量定义为mutable

7:记住传入指针本身并不能改变指针所指向的值

8:内联函数的目的是加速程序运行的速度的,但是在使用不当的情况下,也可能会使得可执行文件变大,进而减慢速度

9:cout输出字符串时,没有结束符'\0'会出错~

10:在windows编程中,两个窗口的处理函数可以是相同的,但是窗口句柄不能相同,因为窗口句柄相当于身份证,是一个整数,确定消息传给哪个窗口的

11:对于new [] 和 delete [] 分为两种情况,一种是为基本数据类型分配和回收空间,因为基本数据类型的对象没有析构函数,所以使用delete和delete []都一样,但对于类对象的数组来说,必须使用delete []

12:类(包括class和struct,注意struct的部分和全局对齐~)的大小只与非静态成员和虚函数有关,一个虚函数有一个指针,32位为4个字节;类的继承中派生类是含有基类的私有变量的,不能访问是编译器的行为。

13:a>b>c  是将a>b 的结果作为参数再与c相比较,+,- 的优先度高于>=

14:int 型-1 在内存中的存储方式为补码(32位,4字节):1111 1111 1111 1111 1111 1111 1111 1111,转化为unsigned char (8位,1字节)截断,取后8位为1111 1111 ,再转化为int,为0000 0000 0000 0000 0000 0000 1111 1111 ,而std::hex 为输出十六进制,即为FF

15:友元函数重载运算符时,因为没有this指针指向对象,因此参数个数和原来一样,运算符至少要有一个~参数列表为1时,为1元,参数列表为2时,为2元;而成员函数重载时,参数列表为空,为1元,参数列表为1时,为2元;

16:C++ 中可以省略struct,而C语言中不可省略char  node;  struct link *next;

17:class A *p = new classA [5] ,构造函数执行五次,delete p 析构函数执行一次,delete []p 析构函数执行5次

18:选堆快希不稳(不稳定排序),选堆归基不变(时间复杂度与初始状态无关)

19:将一个字符串赋给两个字符数组,由于定义在栈上,分配不同内存,%d输出指针,两个指针不同;将同一字符串赋给指针,由于字符串在文字常量区,为静态,所以两个指针的值相同

20:进程间的通信方法有:文件映射、共享内存、匿名管道、命名管道、动态数据交换等等~


1 0