关于c++的动态分配数组

在c++中,数组的长度的值应该是一个具体的数字,不能是一个变量。通常我们借助指针来给动态分配数组
一维数组

int n;
cin >> n;
int *a = new int[n] 

二维数组

int n;
cin >> n;
int **a = new int*[n];
for(int i = 0 ;i < n; i++){
	a[i] = new int[n]
}

动态分配与静态分配的不同

int n;
cin >> n;
char **a = new char*[n];
for (int i = 0; i < n; i++) {
	a[i] = new char[n];
}
cout << &a[0] << endl << &a[1];

我们输出结果发现0143D898 0143D89C相差4个字节,恰好的是一个指针的长度,说明动态分配的二维数组,我们可以把他理解为一个数组,数组的类型是指针,每一个指针又指向一个数组。

char a[10][10] = { "fafeafj","faewfaewf","faefea" };
cout << &a[0] << endl << &a[1];
00B5F7D4  00B5F7DE

这里相差恰好是10 ,说明二维数组的空间和一位数组一样都是连续分配的

猜你喜欢

转载自blog.csdn.net/qq_41374768/article/details/88641097