結構體是一種自定義的數據類型,所以結構體類型的聲明最好和結構體變量的定義區分開。
~~~
#include <stdio.h>
typedef struct student //結構體類型的申明與定義分開。這里是類型 聲明;一般放在.h文件中
{
int age; /*年齡*/
float score; /*分數*/
char sex; /*性別*/
}Student;
int main ()
{
Student a={ 20,79,'f'}; //結構體定義的第一種方式
//第二種方式
Student *pstu=malloc(sizeof(Student));
pstu->age=20;
pstu->score=79;
pstu->sex='f';
printf("年齡:%d 分數:%.2f 性別:%c\n", a.age, a.score, a.sex );
return 0;
}
~~~
結構體變量定義的兩種方式
//結構體定義的第一種方式,通常的變量定義形式,但是一般情況下我們**傳遞結構體變量都是傳地址以減少賦值內存內容的開銷**,所以一般情況下還有一個語句:Student *pa=&a;
Student a={ 20,79,’f’};
Student *pa=&a;
我們干嘛不直接定義一個指向結構體變量的指針呢?所以體現了第二種方法的便利性。
//第二種方式
Student *pstu=malloc(sizeof(Student));
pstu->age=20;
pstu->score=79;
pstu->sex=’f’;
傳遞參數的時候直接把pstu傳過去就over了。