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

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

2017-04-14 09:26 267 查看
1:free之后的指针,只是释放掉指针所指向的内存,但是该指针仍然指向该内存,所以需要置NULL,告诉系统目标地址可回收

2:无符号数的循环可能会造成死循环,unsigned char 0~255,i++ < = 255 就会造成死循环

3:有些信息在存储时,并不需要占用一个完整的字节,而只需要占用几个或一个二进制位,为了节省内存空间,C语言提供了一种数据结构,称为位域或者位段,将一个字节中的二进制位划分为几个不同的区域,并说明每个位域的位数

int a : 3

int b : 4

int C : 5

a,b,C分别占用了int内的3,4,5位,只占用了12位,而int占四个字节,所以这三个变量只占用了一个int类型的空间,也就是4个字节

4:中间件:是一种独立的系统软件或者服务程序,分布式软件借助这种软件在不同的技术之间共享资源,中间件位于客户机/服务器的操作系统值上,管理计算机资源和网络通讯。相连接的两个软件即使有不同的接口,但是通过中间件相互之间仍能交换信息,通过这种信息传递,应用程序可以工作于多平台或OS环境:位于操作系统之上,应用软件之下

5:基类的私有成员、保护成员是可以被继承的,只是不能访问罢了,所以在计算类的大小时,涉及到类继承,需要注意,另外static不属于任何对象,静态变量存放在全局区。

6:传入二级指针或一级指针的地址才能改变一级指针所指向的内容

7:浮点数的二进制表示法:http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html

8:当基类构造函数需要外部传递参数才能初始化时,派生类必须显示定义构造函数,为其基类传递参数。

9:逗号运算符的返回值是表达式的最后一个值,(3,4,5)作为int参数时,使用的是5

10:类的赋值构造函数的参数是A的对象,若a = 10,先将10 转化为A对象,调用A(int a) ,再调用赋值构造函数

11:自动变量:只在定义他们的时候才创建,一般不做说明的局部变量均是自动变量,且自动变量也可以用auto做出声明

12:类的静态成员,不属于任何对象,无论拷贝、继承还是实例化都只有一份!

13:sizeof(void) 若void是标记则为1,否则报错      sizeof(void*) 指针为4

14:pwirite是系统调用的函数

15:函数内部定义的数组是临时变量,在函数返回后内存被释放,通过指针无法再访问,但是通过构造函数进行创建对象,在函数返回后,执行析构函数释放内存,注意是函数返回后再执行析构函数,对象作为返回值时,会调用拷贝构造函数生成一个临时对象,返回的也是临时对象的值,所以返回函数内部临时创建的vector是正确的

16:类的静态方法只能访问类的静态成员变量

17:不能被重载的操作符  ::   ,   *   .   ?:  ,必须作为成员函数重载的运算符: =  []  ()  -> new delete

18:静态成员函数没有this,因为不属于任何对象,也就没有存放虚函数表的地方,静态是编译器必须确定的,虚函数是运行时确定的

19:C语言中函数参数的入栈顺序为从右向左,所以func(++i,i++);当i为0时,func(2,0),printf()函数同样遵循此规则

20:int a加上unsignd int  b,符号会转变为unsigned,因为unsigned的表示范围更大,b在内存中的补码形式会按照unsigned的形式读取,所以要特别注意其结果~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息