自己動(dòng)手做網(wǎng)站seo查詢友情鏈接
結(jié)構(gòu)體定義
? ? ? ? 結(jié)構(gòu)體是一些值的集合,被成為成員變量,結(jié)構(gòu)的每個(gè)成員可以是不同類型的變量
聲明:
? ? ? ? 定義了一個(gè)結(jié)構(gòu)體比如以張藍(lán)圖,不占據(jù)內(nèi)存,當(dāng)你創(chuàng)建了一個(gè)結(jié)構(gòu)體變量時(shí),才占空間.
#include<stdio.h>//struct 為結(jié)構(gòu)體關(guān)鍵字, student 自定義結(jié)構(gòu)體名稱
struct student
{//成員變量列表char name[20];//一個(gè)名字int age; //年齡char sex; //性別}s1,s2,s3; //與下面的S變量都是結(jié)構(gòu)體變量,但是s1,s2,s3為全局變量//上方定義了一個(gè)自定義的結(jié)構(gòu)體類型main()
{struct student s; //創(chuàng)建了student 結(jié)構(gòu)體局部變量為 s;}
簡(jiǎn)便寫法:
利用typedef? 定義別名,? 把 struct student整體 定義別名為stu? ?,
定義變量時(shí),利用stu創(chuàng)建結(jié)構(gòu)體變量即可.? ? ?此刻stu 為結(jié)構(gòu)體類型
#include<stdio.h>//struct 為結(jié)構(gòu)體關(guān)鍵字, student 自定義結(jié)構(gòu)體名稱, typedef 起別名typedef struct student
{//成員變量列表char name[20];//一個(gè)名字int age; //年齡char sex; //性別}stu; //上方定義了一個(gè)自定義的結(jié)構(gòu)體類型main()
{stu s; //把struct student 整體 取了一個(gè)新名字 stu}
結(jié)構(gòu)體變量可以是標(biāo)量,變量,指針,數(shù)組,其他結(jié)構(gòu)體.
#include<stdio.h>//struct 為結(jié)構(gòu)體關(guān)鍵字, student 自定義結(jié)構(gòu)體名稱struct student
{//成員變量列表char name[20];//一個(gè)名字int age; //年齡char sex; //性別}; struct txt
{//成員變量列表int a;string str; struct student s; //結(jié)構(gòu)體變量成員char *pc; //指針變量成員}; main()
{struct txt t={1,"你好",{"李明",12,'男'},arr}; //struct txt t 初始化}
結(jié)構(gòu)體初始化
? ? ? ? 1.創(chuàng)建結(jié)構(gòu)體變量時(shí),直接賦初值
main()
{stu s={"李明",20,"男"}; //初始化結(jié) 構(gòu)體變量s}
訪問結(jié)構(gòu)體變量
? ? ? ? 1.結(jié)構(gòu)體變量.成員變量? ?(訪問嵌套的結(jié)構(gòu)體成員,利用 .嵌套 即可)
? ? ??
main()
{struct txt t={1,"你好",{"李明",12,'男'},arr}; //struct txt t 初始化printf("%s",t.str); // 你好printf("%s",t.s.age); // 12
}
? ? ? ? 2.結(jié)構(gòu)體指針->成員變量
#include<stdio.h>//struct 為結(jié)構(gòu)體關(guān)鍵字, student 自定義結(jié)構(gòu)體名稱, typedef 起別名typedef struct student
{//成員變量列表char name[20]; //一個(gè)名字int age; //年齡char sex; //性別}stu; //上方定義了一個(gè)自定義的結(jié)構(gòu)體類型-----------------------------------------------------------------------------------void print(stu* ps) //形參為 結(jié)構(gòu)體stu 的指針變量 ps
{printf("%s",ps->name); //打印結(jié)果: 李明
}main()
{stu s={"李明",12,'男'}; print(&s); //實(shí)參 為 &s}
第二種方法比第一種方法好
因?yàn)閭鲄?shù)時(shí),參數(shù)是需要壓棧的,第一個(gè)傳遞整個(gè)結(jié)構(gòu)體對(duì)象,系統(tǒng)開銷較大,傳地址則會(huì)更小
?
數(shù)據(jù)結(jié)構(gòu):
線性結(jié)構(gòu)
- ? ? ? ? 順序表? ? ? ? (一條順序的數(shù)據(jù))
- ????????鏈表? ? ? ? ? ?(用一條鏈把數(shù)據(jù)連續(xù)起來)
- ????????棧? ? ? ? ? ? ? (先進(jìn)后出), 插入一個(gè)元素叫"壓棧",刪除一個(gè)元素叫"出棧"
- ????????隊(duì)列????????? (先進(jìn)先出)
樹形數(shù)據(jù)結(jié)構(gòu)
? ? ? ? 二叉樹,圖
?