作用域运算符-联合-强转-内存动态分配-引用
Table of Contents
k## 作用域运算符::
说明 #
- 如果两个变量同名,一个全局的,一个局部的,那么局部变量在其作用域内具有较高的优先级
联合 #
声明 #
union data
{
int i;
double d;
}x;
- 访问时
x.i
x.d
无名联合 #
- 是cpp中的特殊联合,它在关键字union后面没有给出联合名,它可使一组数据共用同一内存地址
结构体对齐
强制类型转换 #
- OLD
int i =10;
float x=(float)i;
- NEW
int 1=10;
float x=float(i);
new与delete运算符 #
C语言内存动态分配 #
int *p;
p=(int*)malloc(sizeof(int));
free(p);
CPP语言动态分配 #
int *p;
p=new int;
delete p;
用法 #
- 用new申请空间的格式
p = new type;
- 用delete释放所申请的空间格式
delete p;
特殊用法 #
- 用new分配内存的同时,可以用()指定其初始值,但不能为数组元素指定初值
int *p;
p = new int(99);
- 用new建立多维数组类型的变量
p=new type[size][m][n]...[s];
int (*pi)[3][4]=new int [i*4][3][4];
- 用new可为动态数组分配内存空间
p=new float[5];
p=new int[m];
p=new double[m+5*n];
new和delete应该配对使用 #
引用(CPP独占) #
- 引用相当于为某个变量、常量、数组或对象起了一个别名
使用 #
- 如果引用不是用作函数的参数或返回值,则必须在说明时初始化
int i;
int &j;
j=i;
is ERROR
int i;
int &j=i;
is RIGHT
- 不是任何类型的数据都可以引用
- 不允许建立void类型的引用
- 不允许建立引用的数组
- 不能建立引用的引用;不能建立指向引用的指针;