数组

基本数组的定义及初始化

对于CPP基本数据的定义以及初始化

1
2
3
4
5
6
7
8
9
type arrName[count] = {val1, val2, val3, ...};
// 定义
int a[10];
char x[2];

// 初始化
for (int i = 0; i<10; i++){
a[i] = i;
}

初始化也可以采用枚举方法

1
2
int x[2]={2,3};
int x = {4,5,6};

根据大括号里面的个数初始化原数组,当个数不匹配时初始化前面的元素,其后为0。

对于char类型的数组,可以用memset初始化

1
2
3
4
#include<cstring>

char x[2];
memset(x,'a',2);

而对于intdouble不适用,这是由于memset是按字节赋值,char数组每个元素为一个字节,而int占用四个字节。可以设置0-1

1
2
3
4
int x[6];
memset(x,0,sizeof(x));

memset(x,-1,sizeof(x));

二维数据

1
2
3
4
5
int x[2][3] = {1,2,3,4,5,6};
// 等价于,行优先
int x[][3] = {1,2,3,4,5,6};

int x[2][3] = {{1,2,3},{4,5,6}};

动态数组

动态数组是指在预编译时数组长度不可知,必须在程序运行时动态给出,用new动态定义数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 一维
int size = 50;
int *p = new int[size];
for (int i=0;i < size;i++){
p[i] = i;
}

// 二维
// 动态分配数组仅对一维数组空间是真正的动态分配,
// 对于二维数组采用指针数组

int **p = new int*[size];
for(int i=0;i<size;i++){
p[i] = new int[column];
}