例如:struct student *p //p可以指向struct student 型別的變數或陣列元素;
例題:main()
stu1 = ,*pstu = &stu1; //讀取結構體成員的值
printf(「%s的學號是%d,年齡是%d,在%c組,今年的成績是%.1f!\n」, (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score); //括號不可省略,點運算子優先順序高於星號運算子
printf(「%s的學號是%d,年齡是%d,在%c組,今年的成績是%.1f!\n」, pstu->name,pstu->num, pstu->age, pstu->group,pstu->score); //」->」指向運算子,表示p所指向的結構體變數的某個成員
} 輸出結果:
tom的學號是12,年齡是18,在a組,今年的成績是136.5!
tom的學號是12,年齡是18,在a組,今年的成績是136.5!
乙個暫存器組 比如串列埠0暫存器組 這些暫存器在「記憶體中」都是連續分布的 硬體製作好的時候 每個暫存器的首位址都是固定的 往暫存器對應的位址的記憶體賦值 就可以實現對暫存器的賦值 實現各種硬體的操作 但是隨著暫存器數量非常大的時候 程式設計師不可能記住每乙個暫存器的位址 要實現對每乙個暫存器都準確無誤的操作 就不能直接往暫存器對應位址的記憶體裡面賦值了 所以這個時候可以通過確定暫存器組的首位址 採用結構體的方式 以該首位址建立乙個結構體 結構體成員變數對應乙個個暫存器 程式設計師通過對結構體變數的賦值 每乙個結構體變數名代表著一小段記憶體空間即乙個個暫存器(暫存器位址名稱對映)
STM32暫存器對映
1.對映即將記憶體的某段位址與某一暫存器對應,微控制器對函式的操作底層是操作暫存器,而暫存器最終是操作記憶體上對應的單元,2.各個暫存器對應的位址都是在st定義的起始位址上層層偏移得到 3.想要實現某功能可直接對此段記憶體寫進相應的值,即可賦予某一功能 4.stm32底層實際是先定義出外設基位址,然...
STM32儲存器對映和暫存器對映
對於cortex m3來講,有一塊4g大小的儲存器空間。儲存器對映指的是晶元廠商為這個空間分配位址的操作。這4g空間被均勻地劃分為8個大小為512mb的儲存塊 block 並且每個塊都各具特色。下面主要介紹block1 block2。flash 起始位址為0x0800 0000,存放使用者程式和掉電...
STM32蜂鳴器 暫存器
這次實驗犯了個笑話,竟然在巨集定義後面加分號.就像這樣 define 大家千萬不要學我,結果報錯expected expression,還苦惱半天,想為啥操作不了暫存器了?我真愚蠢!剛開始我也不會寫這些東西,其實摸清套路就好,rcc時鐘使能 gpio初始化 相關暫存器初始化 延時函式 串列埠等初始化...