更新中...
結構的作用
※處理大量的資料,除了使用陣列外,還有一個方法,就是使用結構,
※以前我們只學過int,double,char等幾種型別,學了結構以后,程式員就可以定義自己的型別,
※從二維表格理解結構(見Excel演示)

結構型別的定義
定義格式:
struct 結構名
{
成員表列
}變數名表列;
結構名”和“變數名表列”可省略,初學者在使用結構時,一般可省略后面的變數名表列,以便于理解,
如:
struct student
{
char name[20]; /*姓名*/
char sex[3]; /*性別*/
int age; /*年齡*/
};
※上面定義了一個結構student,中間是此結構的3個成員變數,記住,它們不可以賦初值,目前只是個軀殼,
※那么什么時候才能給里面的成員賦值呢?那就是定義此結構型別的變數,
※結構在定義時,后面的分號不可少,
結構變數
定義格式:
struct 結構名 變數名;
如:
struct student stu;
此處的stu就是一個student型別的變數,和陣列一樣,它也可以在定義的時候初始化,但是格式有些不同:
struct student stu={“張三”,”男”,23};
注意:結構變數初始化,必須根據成員變數的型別逐個賦初值,而陣列中所有的元素都是賦同樣型別的值,
使用結構變數
結構變數不能直接參考,必須使用·號對結構中的成員變數進行操作,如:
stu.age=18; /*賦值*/
printf(“%d”,stu.age); /*列印*/
※成員變數像普通變數一樣可進行數學運算,
程式1
學生結構
// 11_1學生結構體 #include <stdio.h> #include <string.h> struct student //定義變數 { char name[20]; char sex[3]; int age; }; int main() { struct student stu; struct student stu1 = {"李四","女",19}; //變數賦值 struct student stu2 = {"王二麻子","男",25}; stu.age = 23; strcpy(stu.name, "張三"); //字串賦值 strcpy(stu.sex, "男"); puts(stu.name); //字串輸出函式 printf("%d\n", stu.age); }
聯合
在“我的電腦->檔案夾選項”中有兩種按鈕,圓形的是單選按鈕,方形的是多選按鈕,結構就類似于多選按鈕,你可以同時使用其中多個成員變數,聯合就相當于單選按鈕,無論何時,你只能使用其中一個成員變數,并且只有最后一次 設定的成員變數有效,
結構 與 聯合的區別:
結構相當于多選框,可以選擇多種變數,
聯合相當于單選框,只能選擇一個變數,并且變數是以最后的使用為依據的,
聯合的定義格式與結構差不多,只是前面的struct改成union,除此之外,聯合還有以下特點:
※只能對聯合的第一個成員進行初始化,
如:
union un
{
int i;
double d;
}un1={10}; //只能初始化一個變數,聯合是單選,
※聯合變數的地址和它的各成員都是同一地址,因為它是“聯合”,
※聯合與結構之間可以嵌套定義
程式2
網友在互通QQ的時候,通常不是給號碼就是給昵稱,如何用聯合來表達?
// 11-2-QQ聯合 網友在互通QQ的時候,通常不是給號碼就是給昵稱,如何用聯合來表達? #include <stdio.h> #include <string.h> union QQ { char name[20]; long number; }; int main() { union QQ qq; //定義QQ變數 strcpy(qq.name, "優雅の瘋子"); printf("%s\n", qq.name); qq.number = 787228754; printf("%ld\n", qq.number); printf("%s\n", qq.name); }
// 11-3結構體 有3個學生結構變數,從中找出年齡最大的那個學生,并列印出這個學生的姓名、性別、年齡, #include <stdio.h> #include<string.h> struct student { char name[20]; char sex[3]; int age; }; int main() { struct student stumax; //年齡最大的學生 struct student stu1 = {"小明","男",28}; struct student stu2 = {"7Don","男",25}; struct student stu3 = {"小紅","女",18}; stumax = stu1; //年齡最大的學生始終都在stumax中 if (stumax.age < stu2.age) //這里要注意比較的時候是比結構中的年齡 stumax = stu2; //賦值的時候是直接賦值結構 if (stumax.age < stu3.age) stumax = stu3; printf("%s,%s,%d\n", stumax.name, stumax.sex, stumax.age); /*只能將元素一個一個地輸出*/ }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295950.html
標籤:C
