0
我想實現一個使用雙指針的二維數組。我試圖實現的方式是根據其物理表示將其視覺化。例如,考慮一個2×2矩陣和它的物理表示是雙指針實驗二維數組
c1 c2
R1 - > A00 A01
R2 - > A10 A11
步驟1:創建一個雙指針以指向到第一行
步驟2:創建第一級指針指向c1的地址步驟3:從用戶輸入
步驟4:創建第一級指針poi NT才能的C2
步驟5的地址:從用戶
步驟6輸入:遞增行指針爲指向R2
步驟7:從步驟重複2至5
下面是實現的代碼的代碼段由我:
int _tmain(int argc, _TCHAR* argv[])
{
int **p,***temp;
p = (int **)malloc(nRows*sizeof(int *));
//Allocating memory for two rows, now p points to R1
temp = &p; //storing the address of p to restore it after storing the values
for(int i=0;i<nRows;i++)
{
for(int j=0;j<nCols;j++)
{
*(p+j) = (int *)malloc(sizeof(int));
//Allocating memory for col , now *p points to C1
scanf("%d",*(p+j));
}
p += 1; // NOw p is pointing to R2
}
p = *temp; // restoring the base address in p;
for(int i=0;i<nRows;i++)
{
for(int j=0;j<nCols;j++)
printf("%d",*(p+j));
// In first iteration print values in R1 and R2 in second iteration
p += 1; // points to the next row
}
getch();
return 0;
}
該scanf似乎工作正常。但在printf中,我得到了不穩定的結果。它開始指向一些其他的位置
你能讓我知道如何以前面說過的方式實現這個二維數組嗎?我正在練習 這個練習,目的只是爲了深入瞭解雙指針的工作。
我是新來的編程和嘗試學習..所以請幫助 – user1611753
開始理解簡單的1D數組,以及數組和指針之間的關係或非關係... –
這裏有一個鏈接,你需要什麼知道:http://stackoverflow.com/questions/12462615/how-do-i-correctly-set-up-access-and-free-a-multidimensional-array-in-c – Mike