C++中数组定义及初始化

C++中数组的定义和初始化

一维数组:

1、静态 int array[100] .定义了数组array,并未岁对数组进行初始化

2、静态int array[100] ,定义并初始化了数组array

3、动态 int* array =new int [100] ,在堆上分配内存,使用new关键字分配的内存,返回值都是指针,所以数组声明为 int* 类型。需要调用delete函数

进行删除:delete[] array ;分配了长度为100的array数组,并并对其进行了删除操作。

4、动态 in* array=new int[100](1,2);delete array ;分配了长度为100的数组array并初始化了前两个元素

二、二维数组:

1、静态int array[10][10]定义了数组,并未进行初始化

2、静态 int array[10][10]={{1,2},{2,3}}数组初始化了array[0][0,1]及array[1][0,1]

3、动态 int (*array)[n]=new int [m][n]; delete array 这里必须制定第二维数组的大小

4、动态 int** array = new int*[m]; 这里必须指定第一维数组的大小,第二维数组的大小可以通过new关键字再动态申请。二维数组的维数的第一维数组的大小必须指定,第二维可以继续动态分配,但是需要多调用delete析构释放内存,例如:

int (*array)[n]=new int[m][n];
int **array=new int*[m];
//对其进行初始化
for(int i =0;i<m;i++){
array[i]=new int[n];
}
//进行销毁
先销毁第二维的数组
forint i =0;i<m;i++){
delete[] array[i];
}
再销毁第一维的数组
delete[] array;

三、多维数组

int* array = new int[m][3][4]; 只有第一维可以是变量,其他维数必须是常量,否则会报错
delete []array; 须进行内存释放,否则内存将泄漏

小节:

在用new进行动态分配的时候,对于多维数组,需指定的是

四、数组作为函数形参传递

一维数组传递:
  void func(int* array);
  void func(int array[]);    
二维数组传递:
  void func(int** array);
  void func(int (*array)[n]);                  
数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针,而且在其失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

五、字符数组

char类型的数组被常委字符数组,在字符数组中最后一位为转移字符’\0’(也被成为空字符),该字符表示字符串已结束。在C++中定义了string类,在Visual C++中定义了Cstring类。

字符串中每一个字符占用一个字节,再加上最后一个空字符。如:

char array[10] = “cnblogs”;

虽然只有7个字节,但是字符串长度为8个字节。

也可以不用定义字符串长度,如:

char array[] = “abc”;

参考博文:

C++中数组定义及初始化

猜你喜欢

转载自blog.csdn.net/xiongchengluo1129/article/details/79435467