关于c++的动态分配数组
程序员文章站
2023-12-26 15:09:15
...
在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 ,说明二维数组的空间和一位数组一样都是连续分配的