指標指向陣列並指定陣列首地址的一種方法
阿新 • • 發佈:2019-01-09
今天因為雙核通訊,需要共享一塊記憶體,想到C語言可以為一個引數指定地址,那麼如何為一個數組指定首地址呢?
借鑑引數指定地址的方法,先想到用一個指標來指向一個數組,同時定義陣列的資料型別,我是這樣定義的
short (*ptr)[1024;
這樣就定義了一個指標,該指標指向陣列型別為short型別,切長度為1024,但是這個指標或者說是陣列並沒有初始化的地址,
於是需要給它初始化一下,也就是指定陣列的起始地址,我是這樣做的
ptr = (short(*)[1024])0xc0001200;
這裡(short(*)[1024])0xc0001200將數字0xc0001200強制轉換成(short(*)[1024])的型別的地址,可以理解成一個無名的指標(*)指向一個型別為short,
長度為1024的陣列的首地址,該首地址為0xc0001200,並將這個地址賦值給ptr;
下面我通過C編譯器進行了驗證。
開始時ptr指標的狀態是上面這樣的,指向地址為0x00000000,指標所在地址為0xc14fcf64
經過ptr = (short(*)[1024])0xc0001200;這一步後,變成如下形式
指標地址已經指向0xc0001200,並且指向一個長度為1024的short型別的陣列。