C++&STL复习整理

C++基础及STL基础知识在复习中的整理,面试前突击使用

C++复习

C++

一、const的作用

1、初始化定义后,不能再改变变量的值

2、const (char) *pContent;意思是指针指向的内容是常量不可变;const (char*) pContent;意思是指针本身是常量不可变

3、const修饰函数参数是它最广泛的一种用途,它表示函数体中不能修改参数的值(包括参数本身的值或者参数其中包含的值)

4、const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。 const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。

5. const常量与define宏定义的区别

(1) 编译器处理方式不同

define宏是在预处理阶段展开。

const常量是编译运行阶段使用。

(2) 类型和安全检查不同

define宏没有类型,不做任何类型检查,仅仅是展开。

const常量有具体的类型,在编译阶段会执行类型检查。

(3) 存储方式不同

define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

const常量会在内存中分配(可以是堆中也可以是栈中)。

二、sizeof()

作用是返回一个对象或者类型名的字节长度,有三种语法形式

sizeof(object); sizeof(type_name); sizeof object;

sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,但函数并不会被调用。

C++规定,函数、不能确定类型的函数调用表达式、以及位域成员不能计算sizeof的值。

1> sizeof的计算发生在编译时刻,所以它可以被当做常量表达式使用。例如 char ary[sizeof(int)*10]

2> 基本数据类型的sizeof

一般的,在32位编译环境中,sizeof(short)为2,sizeof(int)为4,sizeof(long)为4,sizeof(float)为4,sizeof(double)为8,sizeof(char)为1

3> 指针变量的sizeof在32位机器中,返回必定为4

4> 数组的sizeof值等于数组所占用的内存字节数

char a1[] = "abc"; int a2[3]; sizeof(a1)为4,每个char占一个字节,且末尾包含\0; sizeof(a2)为3*4=12 5> 结构体的sizeof

struct

{

int d2; //开始,偏移量为0,sizeof(int)为4,占用4个字节

double d1; //此时偏移量是4,但sizeof(double)为8,偏移量4不是8的整数倍,需要补4位先,所以此时总共占用了 4+4+8=16字节

short d3; //此时偏移量是16,sizeof(short)为2,偏移量16是2的整数倍,所以此时总共占用了16+2=18字节 char d4; //此时偏移量是18,sizeof(char)为1,偏移量18是1的整数倍,所以此时总共占用了18+1=19字节

}Mystruct; //最终所占的字节数必须是结构体中占最大字节数类型的整数倍,所以再需补5字节,最终为24字节,是double的整数倍

6> 联合体的sizeof

结构体在内存组织上是顺序式的,联合体则是重叠式的,各成员共享一段内存,所以整个联合体的sizeof就是其中每个sizeof

C++&STL复习整理相关文档

最新文档

返回顶部