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