现在的位置: 首页 > 综合 > 正文

C++札记

2013年02月05日 ⁄ 综合 ⁄ 共 709字 ⁄ 字号 评论关闭

1、在const成员函数中,用mutable修饰成员变量名后,就可以修改类的成员变量了。

 

2、在默认情况下,为了方便对结构体内元素的访问和管理,当结构体内的元素的长度都小于处理器的位数的时候,便以结构体里面最长的数据元素为对齐单位,也就是说,结构体的长度一定是最长的数据元素的整数倍。如果结构体内存在长度大于处理器位数的元素,那么就以处理器的位数为对齐单位。

3.X86CPU能直接访问对齐的数据,当它试图访问一个未对齐的数据时,会在内部进行一系列的调整。这些调整对于程序来说是透明的,但是会降低运行速度。

4.堆是后进先出,栈是先进先出。

5.局部变量是存放在栈中,参数也是放在栈中;静态变量与全局变量不在栈中,也不在堆中,存放在全局数据区。malloc/new分配的内存/对象在堆中

6、sizeof和strlen的区别:

(1)sizeof操作符的结果类型是size_t,它在头文件中的typedef为unsigned int类型。这类型保证能容纳实现所建立的最大对象的字节大小。

(2)sizeof是运算符,strlen是函数。

(3)sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以"\0"结尾的。sizeof还可以用函数做参数。

(4)数组做sizeof的参数不退化,传递给strlen就退化成指针。

(5)大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度。这就是sizeof(x)可以来定义数组维数的原因。

(6)strlen的结果要在运行时才能计算出来,用来计算字符串的长度,而不是类型占内存的大小。

(7)sizeof后如果是类型必须加括号。如果是变量名可以不加括号。

 

抱歉!评论已关闭.