最近在學習單片機,作爲初學者,雖然在大學的時候學了點C語言但是因爲後面學了java所以C語言的基礎又還給了
老師,今天在看STM8 的教程的時候看到一段對結構體的描述,記在這裏做個備忘。
typedef struct GPIO_struct
{
__IO uint8_t ODR; /*!< Output Data Register */
__IO uint8_t IDR; /*!< Input Data Register */
__IO uint8_t DDR; /*!< Data Direction Register */
__IO uint8_t CR1; /*!< Configuration Register 1 */
__IO uint8_t CR2; /*!< Configuration Register 2 */
}
GPIO_TypeDef;
這就是庫函數裏面對GPIO的結構體定義。對於理解可以用
typedef struct Man
{
int age;
int score;
}man;
int main()
{
Man man1 = {20,80};
Man man2 = {30,70};
Man man3 = {40,99};
printf("%d\n",man1.age);
printf("%d\n",man3.score);
}
這樣理解更加容易理解 要一個人
怎麼辦呢 先typedef struct 一個名字叫做Man的結構體
定義內容,
年齡 分數 等等
然後結束帶個變量名man
其實聲明的結構體名 和結束的變量名可以相同。
typedef struct man
{
int age;
int score;
}man; //還叫man
int main()
{
man man = {40,50};//還叫man
printf("%d\t%d\n",man.age,man.score);
}
這樣也可以,就是可讀性差了點。
我以後還是會結構體名字和變量名不一樣,免得自己混淆了。
關於更深入的用指針取結構體地址的,單片機貌似用不到。暫時先擱置,以後用到再慢慢了解~