C++ 数组小结~~

1. 数组 的定义和初始化:

数组由 类型名、标示符和维数组成的。数组的下标我们要特别的注意下:比如说

const int buf_size = 100, max_files = 20;

int staff_size = 10;

const int szBuf = get_size();  // szBuf的值在程序运行的时候才知道。

char cCH[buf_size];    //正确

char cCH[max_files + 1];  //正确

double dBuf[staff_size];  //错误

float fBuf[get_size()];    //错误  非常量表达式

int nBuf[szBuf];   //错误  szBuf 的值在运行时期才知晓。

 

2. 显示初始化数组

int a[] = {0,0,0,0};  //初始化列表

在函数体外定义的内置数组  其元素初始化为0;

在函数体内初始化的数组 其元素初始化。

FunA(){

  int a[5];

  cout<<a[1]<<endl;   //ERROR

}

如果其元素类类型 则自动调用默认的构造函数进行初始化,若没有构造函数,则必须提供显示初始化

3 特殊的字符数组

char ca1[] = {'C','+','+'};

char ca2[] = {'C','+','+','\0'};

cahr ca3[] = {"C++"};

 亲  想下三个数组额维数分别为多少呢。。

 

char ca4[5] =  {“hello”};//error

 

4. 不允许数组直接复制和赋值。

5. 数组越界 编译器不会报错,但是有时候会出现意想不到的错误。

 


 int a[3] = {0};
 
 a[4] = 5;

 

 for(int i =0; i < 4; i++)
 {
  printf("%d",a[i]);
 }

 

动态数组的定义

 int *p = new int [10];  //分配了10个int 元素的数组,并返回指向该数组的第一个元素的指针,初始化指针p;

动态分配数组时 如果是类类型 将使用该类的构造函数实现初始化,如果是内置类型,没有初始化。

但  这样可以进行初始化: int *p1 = new int[10]();//数组元素都设置为0;

const 对象的动态数组 必须实现初始化。

允许动态分配空数组。

动态空间的释放

用delete []表达式释放指针所指向的数组空间。

值得注意的是: 【】是不能够省略的,告诉编译器它指向的是自由存储区中的数组,并非单个对象。

 

 

 

 

 

 

 

posted on 2013-07-06 22:25  0bject  阅读(619)  评论(3)    收藏  举报