[問題] 動態配置矩陣的理解

作者: SFMAndroid (安卓發送)   2018-05-26 17:23:56
如題
之前在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]
想請問大大們我的理解有沒有錯誤
或者有其他比較準確的解釋方式嗎?
謝謝
作者: bluesoul (忙死你老爸)   2018-05-26 17:29:00
沒有錯誤
作者: SFMAndroid (安卓發送)   2018-05-26 19:19:00
感謝大大

Links booklink

Contact Us: admin [ a t ] ucptt.com