如题
之前在GitHub上看到一段程式码
作者是用double pointer来配置动态矩阵
程式码如下:
/* n by m array */
cin >> n >> m;
int **dp = new int *[n];
for (int i = 0; i < n; i++)
{
dp[i] = new int[m];
for (int j = 0; j < m; j++)
{
dp[i][j] = 1;
}
}
我的理解是
dp是pointer to pointer array to integer array
指向pointer array的第一个位置
dp[n]就和一般一维阵列一样 只是里面是存pointer的位置
所以内存分配是像下图 (粗略)
_____________________________________________________________
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
_____________________________________________________________
dp dp[0] dp[1] dp[2]...dp[n] dp[0][0] dp[0][1]...dp[n][m]
^ ^ ^
| | |
int** int* int
dp[0], dp[1], ..., dp[n]是pointer to integer array
分别也都是指向该array的第一个位置
ex. dp[0] == &dp[0][0], dp[1] == &dp[1][0], ..., dp[n] == &dp[n][0]
想请问大大们我的理解有没有错误
或者有其他比较准确的解释方式吗?
谢谢