在我主我訪問使用指針二維數組用C
int mat[ROW][COL];
int *p = &mat[0][0];
minput(p, ROW, COL);
我卡在如何讓minput,因爲我應該初始化組數字的二維數組,但我只是不「噸明白我應該如何分配號碼,
我得到的M [0] [0]指針是*(*(m+0)+0)
,但它不會讓我這樣做*(*(m+0)+0)=0;
,
,因爲它給出invalid type argument of unary ‘*’ (have ‘int’)
錯誤。
所以基本上我只是想知道如何使用指針分配一個數字到2d數組,如果我們不需要使用指針,那麼這對m [2] [2] = 5是很容易的,我不知道如何用指針來做到這一點。
我的教授提供了minput函數的單行示例,它只是*(m+0) = 8;
,這對我來說沒有意義,是不是我們用於1d數組?如果這是做到這一點的方法,那麼這是否意味着我應該做一些像
*(m+0) = 8;
*(m+1) = 1;
*(m+2) = 6;
*(m+3) = 3;
*(m+4) = 5;
*(m+5) = 7;
*(m+6) = 4;
*(m+7) = 9;
*(m+8) = 2;
爲3x3陣列?這對我來說似乎不太合適,如果有人能夠幫助我解決這個問題,這將是非常棒的,指針對我來說非常混亂。
編輯:讓我看,顯然以正確的方式來做到這一點是我上面的 *(*(m+0)+0) = val
,但我這樣做,在我的代碼的時候,我得到這個錯誤中列出的方法:
error: invalid type argument of unary ‘*’ (have ‘int’)
*(*(m+0)+2)=6;
^
這是爲什麼?這個任務是否錯誤?
爲什麼不能將二維數組作爲指向數組的指針?即'f(int arr [ROW] [COL])'?其他任何東西都是無稽之談。 (它被轉換爲'int(*)[COL]',但你可以像往常一樣使用2D索引)。並且使'p'成爲正確的類型! – Olaf
哦,如果你的教授提供的是真正意義上的二維數組,改變過程。並啓用編譯器警告並注意它們 - 特別是當涉及指針和數組時。 – Olaf