1
讓說我有一個指針爲int:我可以在C中訪問指針作爲二維數組嗎?
int *p = somefunc();
我知道它指向25個整數,邏輯上排成一個5x5的網格。我可以訪問這個元素:
p[y*5+x]
或本:
*(p+y*5+x)
有沒有一種接入方式它作爲一個二維數組?
a[y][x]
讓說我有一個指針爲int:我可以在C中訪問指針作爲二維數組嗎?
int *p = somefunc();
我知道它指向25個整數,邏輯上排成一個5x5的網格。我可以訪問這個元素:
p[y*5+x]
或本:
*(p+y*5+x)
有沒有一種接入方式它作爲一個二維數組?
a[y][x]
是:
int (*a)[5] = (int (*)[5])p;
我會做一個簡單的函數來做到這一點:
int at(int * p, int x, int y)
{
return p[y*5+x]
}
您可以添加其他參數表中的那麼具體寬度(即其他有5 ),但這就是我通常這樣做的方式。
如果沒有明確鑄造,是不可能的? –
@TorKlingberg據我所知,沒有。 – melpomene
我已經測試過了,它工作的很好。 – cwfighter