今天因爲雙核通信,需要共享一塊內存,想到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類型的數組。