c語言,指標,stm32,C語言的指標問題

2023-02-13 21:20:07 字數 3743 閱讀 4953

1樓:網友

tp_dev為外結構體變數,當變數被引用時,它必須時一個已經賦值(初始化)的變數,所以tp_被引用時,呼叫的時初始化了的函式指標scan()所指向的函式tp_scan()

2樓:甕瑗

tp_dev是一個結構體,init、scan都是他的結構體成員,這幾個成員的型別是函式指標,也就是說指向了一個函式,使用這個指標,就等於是函式呼叫。

所以當定義tp_dev的時候,init成員被你初始化為tp_init, 也就是說tp_ 就是指向了tp_init()函式,所以你寫tp_;就等於呼叫tp_init

_m_tp_dev tp_dev=

同樣如果你tp_,就是呼叫tp_scan

3樓:今天

你自己試試不就知道了麼。有什麼了怎的呢0568字樓主十二次比。

c語言的指標問題

4樓:網友

陣列名就是他的首地址,也相當於指標在編譯器編譯的過程中陣列會退化為指標,而且你需要注意的是*p定義的時候是char *p,a = 2,賦值的時候是p = a;也就是說*p= a;因此p才是指標而不是*p,p中存放的是變數的地址;*p表示的是p的地址中存放的資料。在賦值過程中往往是定義一個陣列a[10] =hello";p = a;例如:strlen(..

)是函式,要在執行時才能計算。引數必須是字元型指標(char*),且必須是以'\0'結尾的。當陣列名作為引數傳入時,實際上陣列就退化成指標了。

雖然關聯不大但還是推薦你看一下這篇博文,有關sizeof和strlen的,介紹了不少指標和陣列的定義和用法,望採納。

net/niushuai666/article/details/7677210多逛逛csdn和chinaunix的部落格很有益處,華清遠見的部落格就不錯,因為他是一個培訓機構,裡面都是各位老師總結的心得雖然是嵌入式的和你學的可能不一樣但是可以借鑑一下里面關於c語言的,或者你看下其它人的部落格也行,歡迎一起學習交流。

5樓:匿名使用者

函式的引數描述部分不是開設變數,而是描述得到的資料的型別。

呼叫的過程是這樣的:

呼叫者將字串text_buffer的首地址入棧,再入棧一個整型數,然後呼叫at24cxx_write

at24cxx_write將棧中的那個首地址資料當成指標變數pbuffer來用,相當於設定該變數在棧中的哪個位置,同理numtowrite變數也在棧中。

然後用這兩個變數進行計算。

函式返回時,系統會自動丟棄這兩個臨時的資料,那麼臨時的變數也被捨棄了。

6樓:匿名使用者

首先你要搞懂什麼是陣列什麼是指標。對於陣列來說其實是一塊分配好的記憶體空間,陣列名就是這塊空間的首地址。而指標是用來儲存地址的變數。

所以(u8*)text_buffer是text_buffer的地址,因此實參也是這塊空間的地址,而形參pbuffer儲存的內容也是text_buffer的地址。其實你只要知道指標是用來儲存地址的,陣列名其實是記憶體地址應該就能理解了。關於陣列和指標還有一些可以說的,就是關於[ ]和 *是怎麼解引用的。

不過再說就複雜了………

7樓:匿名使用者

(u8*)text_buffer這是強制型別轉換,把text_buffer強制轉換成u8*型別。

8樓:彭珂的課堂

c語言_071_指標的定義和使用_上。

用c語言開發stm32和開發其他東西感覺不太一樣吧

顯示屏函式 stm32 指標!!!!啥意思? 20

c語言的一個結構體的定義,看不明白。是stm32學習資料裡的一個例程。

9樓:天雲小店

void (*sendover)(void); 傳送完畢的**函式指標 */

void (*recivenew)(void); 串列埠收到資料的**函式指標 */

都是指標函式,函式的返回值是一個void指標型別。

在stm32 例子的 c語言 程式中看到這樣一句 *(__io uint16_t *) (((uint32_t)0x60020000) ) 看不懂呀

10樓:網友

0x60020000是個io地址,這句話首先把0x60020000轉成uint16_t指標。

然後取該指標指向的值,看看data sheet,這個地址大概是哪個io 控制暫存器的地址。

簡單講就是讀這個暫存器裡的東東。

11樓:匿名使用者

(((uint32_t)0x60020000) )是32位的io地址(實體地址,硬體上設定的,不可修改)

*(_io uint16_t *)是讀取該地址的引數值,其值為16位引數。

實際上是讀取0x60020000暫存器的引數,或者可以說是這個io口現在的狀態。

stm32開發中,如果想動態分配記憶體,要想實現標準c中的malloc(),free()函式功能咋辦

12樓:套x現

是這樣的,如果不釋放,下次這段動態記憶體空間就無法再使用了,久而久之,容易造成記憶體洩露這樣的問題。

13樓:匿名使用者

隨機數可以利用adc讀取懸空腳的值,這是真正的隨機數。

malloc(),free()需要記憶體管理的支援,除非你用上作業系統。

c語言指標問題 10

14樓:匿名使用者

最好貼上完整程bai序 或標註有du行號。

提示已zhi經很明顯,74行是ptr重複宣告dao了(這一專段裡面沒看到。

屬重複宣告,所以應該在它前面的**段裡),且不能用uint8_t型別的值去初始化uint16_t型別的例項(這兩個型別是定義的類還是直接typedef?)

78行,表示式必須是指向物件型別。

15樓:匿名使用者

ptr重複申明,兩個型別不一樣;

表示式必須有指向物件型別的指標。

16樓:歷史的文風

30分鐘徹底學會c語言指標。

c語言中,定義static char *p指標,和定義char *p指標,有什麼本質的不同,是指向元素動態和靜態嗎?謝謝

17樓:匿名使用者

static,若聲bai明一個靜態的區域性du變數的。若希望函式zhi中的區域性變數的值在函式調dao用結束後不專消失而保留原值屬,即其佔用的儲存單元不釋放,在下次該函式呼叫時,該變數保留上一次函式呼叫結束時的值。這時就應該指定區域性變數為靜態區域性變數。

若宣告的是一個靜態的全域性變數,則會禁止其它檔案訪問該全部變數,進行對該全域性變數的保護,跟extern相對的。

而char *p只是一個普通的指標宣告。

18樓:匿名使用者

這樣定義要看你的定義在什麼地方。

static 有兩種作用:

2.區域性的:就是你所的靜態。

19樓:匿名使用者

static char *p

char const *p

char *p

三種第一種 指標p所指向的內容不內可變容,但是指標指向可變。

第二種 指標p所指向的內容可變,但是指標指向不可變第三種 定義一個指標p,兩者都可變。

const 常量定義。

c語言指標問題,C語言指標問題

記憶體對齊的緣故。p buf 作為一個指標,它的值是記憶體的某個位元組的地址。如果想要把 p buf 強制轉換版 成一個 unsigned int 型別的指權針,需要滿足一個必要條件,就是 p buf 的值必須能夠被4整除。之所以是4,是因為 unsigned int 是要佔4個位元組的 c語言結構...

C語言指標變數比較,怎樣運用c語言指標變數比較兩個字串是否相等?請修改

首先要 分清,是在 宣告中 還是在語句中。宣告中,例如 int a 1,b 2 int p,q 宣告 p 和 q 是指標,用於指向 int 型資料。p a q b 語句,p 和 q 是指標 指向的資料 的地址,p 指向 a,q 指向 b.if p q printf 語句,p 和 q 是 地址 地址大...

關於C語言指標問題,求大神,C語言指標的問題,求大神!!

第一個函式的兩個指標是區域性變數,函式完了就銷燬了,換不換都一樣,第二個是直接操作指標指向的地方 記憶體單元 也就是直接操作變數。不恰當的比方,好比停車,有個圖紙記錄了每個車位停的什麼車,第一個就相當於另外拿了個圖紙畫了一下想要的位置,原來的圖沒變,函式結束後來的圖被扔了,原來的圖保留著,實際的車並...