Skip to main content
  1. CPPs/

作用域运算符-联合-强转-内存动态分配-引用

·105 words

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

  • 不是任何类型的数据都可以引用
  1. 不允许建立void类型的引用
  2. 不允许建立引用的数组
  3. 不能建立引用的引用;不能建立指向引用的指针;