利用二级指针申请一个二维数组。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char** argv) {
int** p;
int m, n;
scanf("%d %d", &m, &n); // m行n列
// 申请空间二维空间
p = (int**)malloc(sizeof(int*) * m);
// 再申请一维数组
for (int i = 0; i < m; i++) {
p[i] = (int*)malloc(sizeof(int) * n);
}
// 打印地址,每行的列与列之间的地址时连续的,行与行之间的地址不连续
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%p\t", &p[i][j]);
}
printf("\n");
}
// 释放空间
for (int i = 0; i < m; i++) {
free(p[i]);
}
free(p);
system("pause");
return 0;
}
输出每个元素地址,每行的列与列之间的地址时连续的,行与行之间的地址不连续