C++中动态数组、数组参数
时间:2010-09-29 来源:Adriano
一、C++中的动态数组
写程序的时候,我在想动态数组怎么写,new int[],方括号中可以写常量吗,真是郁闷,一些基本的知识都不记得,还是多练练吧。
int *pia = new int[10]; // 数组的维数可以是任意的复杂表达式。
delete []pia;
动态分配数组时,数组元素为类类型调用默认构造函数,内置类型的不初始化。可以在数组后面跟一对圆括号,对数组元素做值初始化。
int *pia2 = new int[10] (); //数组元素都设为0
使用数组时,可以用*pia ,或下标 pia[]访问数组元素。
二、C++中数组参数详解
在C++中,数组不是按值传递,而是传递第一个元素(准确地说是第0个)的指针。 void func(int[10]);被编译器视为: void func(int*);
数组的长度与参数声明无关。因此,下列三个声明是等价的:
void func(int*);
void func(int[]);
void func(int[10]);
1、在被调函数内对参数数组的改变将被应用到数组实参上,函数可以通过把参数类型声明为const来表明不希望改变数组元素: void func(const int a[10]);
2、数组长度不是参数类型的一部分,通常习惯将数组长度作为另一个参数传递过去如:void func(int a[], int length)
3、另外一种机制是将参数声明为数组的引用。当参数是一个数组类型的引用时,数组长度成为参数和类型的一部分,编译器检查数组实参的长度与在函数参数类型中指定的长度是否匹配。
void func(int (&arr)[10]); //这个版本的func将只接受10个int的数组 int a[10]