学结构体了
指針學(xué)完了,來學(xué)學(xué)結(jié)構(gòu)體吧,走進(jìn)了一個(gè)新的世界。
結(jié)構(gòu)體:不同的數(shù)據(jù)類型組成的一個(gè)結(jié)構(gòu)
一般形式:struct 結(jié)構(gòu)體名
? ? ? ? ? ? ? ? ? ? {成員表列};
聲明:類型名 成員名
定義的方法:
先聲明結(jié)構(gòu)體類型,再定義該類型的變量
?
struct student {int age;char name[20]; };//不要忘了末尾的';',結(jié)構(gòu)體的聲明struct student student1;//定義
在聲明的時(shí)候同時(shí)定義變量
?
?
struct student {int age;char name[20]; }student1;?
?
不指定類型名直接定義結(jié)構(gòu)體變量(沒有結(jié)構(gòu)體名,不能再去定義其他結(jié)構(gòu)體變量)
?
strcut {int age;char name[20]; }zhangsan;?
?
?
要點(diǎn):結(jié)構(gòu)體變量的賦值和引用(結(jié)構(gòu)體名,變量名)
?
結(jié)構(gòu)體數(shù)組:數(shù)組的每個(gè)元素由結(jié)構(gòu)體組成
看代碼:定義個(gè)結(jié)構(gòu)體數(shù)組然后打印
?
#inlcude<stdio.h>struct people {int age;char name[20]; }student[2]={18,"zhangdan",19,"lisi"};//定義結(jié)構(gòu)體輸組,聲明定義一起完成int main() {for(int i=0;i<2;i++){printf("%d,%s",student[i].age,student[i].name);}return 0; }打印:18,zhandgan
?
? ? ? ? ? ? 19,lisi
?
聲明和定義分開時(shí):
?
struct people {int age;char name[20]; };struct people student[2]={18,"",19,"lisi"};
結(jié)構(gòu)體指針:指針向結(jié)構(gòu)體類型的指針變量(要注意其類型)
?
看代碼:
?
#include<stdio.h>struct people {int age;char name[20]; };int main() {struct people people1={18,"lisi"};//定義結(jié)構(gòu)體變量struct people *p=&people;//定義結(jié)構(gòu)體指針,并賦予people1的地址,注意指針類型為結(jié)構(gòu)體類型printf("%d,%s\n",people1.age,people1.name);//結(jié)構(gòu)體變量名引用printf("%d,%s\n",p->age,p->name);//指針引用return 0; }?
?
結(jié)構(gòu)體變量和結(jié)構(gòu)體指針作為函數(shù)的參數(shù):
?
#include<stdio.h>struct people {int age;char name[20]; };struct student {int age;char name[20]; }gs[2]={15,"zhandgan",16,"lisi"};int print1(strcut people peopleN)//傳入結(jié)構(gòu)體變量 {printf("%d,%s\n",peopleN.age,people.name);return 0; }int print2(struct student[])//傳入結(jié)構(gòu)體數(shù)組 {for(int i=0;i<2;i++){printf("%d,%s\n",gs[i].age,gs[i].name);return 0;} }int print3(struct people *p1)//傳入結(jié)構(gòu)體指針 {printf("%d,%s\n",p1->age,p1->name);return 0; }int main() {struct people people1={18,"lisi"};strcut people *p=&people1;//定義結(jié)構(gòu)體指針并賦值print1(people);print2(gs);print3(p);return 0; }全部打印出對(duì)應(yīng)的值。
?
?
好了,結(jié)構(gòu)體到這里就告一段落了,以后再學(xué)。
?
?
?
總結(jié)