呵呵噠!手把手教你C語言結構體與共同體

2021-10-02 17:01:12 字數 3015 閱讀 7343

1.宣告乙個結構體型別的一般形式為:struct 結構體名;

(1)在宣告型別的同時定義變數

struct studentstudent1,student2;
關於結構體型別,有幾點要說明:

(1)型別與變數是不同的概念,不要混同。

(2)對結構體中的成員(「域」),可以單獨使用,它的作用與地位相當於普通變數。

(3)成員也可以是乙個結構體的變數。

2.結構體變數的引用

例如:

struct date;

struct studentstudent1,student2;

可以這樣訪問成員變數:

student1.num;

student1.birthday.month;

3.結構體陣列

(1)對候選人得票的統計程式。設有3個候選人,每次輸入乙個得票的候選人的名字,要求輸出個人得票結果。

#include #include struct personleader[3]=;

void main()

} printf("\n");

for(i=0;i<3;i++)

}

#include #include struct personleader[3]=;

void main()

} }for(p=leader;p4.指向結構體型別資料的指標

結構體變數.成員名

(*p).成員名

p->成員名

#include #include #define display "no:%ld name:%s ***:%c score:%f\n"

void main();

struct student stu_1;

struct student *p;

p=&stu_1;

stu_1.num=1010;

strcpy(stu_1.name,"heheda");

stu_1.***='m';

stu_1.score=100.0;

printf(display,stu_1.num,stu_1.name,stu_1.***,stu_1.score);

printf(display,(*p).num,(*p).name,(*p).***,(*p).score);

printf(display,p->num,p->name,p->***,p->score);

}

5.指向結構體陣列元素的指標

#include #include #define display "no:%ld  name:%s ***:%c score:%f\n"

struct student;

struct student stu[2]=,};

void main()

}

6.用結構體變數和指向結構體的指標作函式引數

#include #include #define display "no:%ld  name:%s ***:%c score:%f\n"

struct student;

void main()

void print(struct student stu_1)

#include #include #define display "no:%ld  name:%s ***:%c score:%f\n"

struct student;

void main()

void print(struct student *p)

7.用指標處理鍊錶

(1)靜態鍊錶

#include #define null 0

struct student;

void main()while(p!=null);

}

(2)動態鍊錶

處理動態鍊錶所需的函式

malloc函式

calloc函式

free函式

#include #include #define null 0

#define len sizeof(struct student)

struct student;

int n;

//建立鍊錶

struct student *creat(void)else

p2=p1;

p1=(struct student *)malloc(len);

scanf("%ld",&p1->num);

} p2->next=null;

return head;//函式返回的是head的值

}

void print(struct student *head)while(p!=null);

}}

struct student *del(struct student *head,long num)

p1=head;

while(num!=p1->num&&p1->next!=null)

if(num==p1->num)else

printf("delete:%ld\n",num);

n=n-1;

}else

return (head);

}

struct student *insert(struct student *head,struct student *stud)elseelse

} }n=n+1;

return(head);

}

8.共同體union

numname

***job

class(班)/position(職務)

101lifs

501102

wangmt

prof

C語言 指標高階 《手把手教你學C語言》

3.多級指標 3.2通過指標引用二維陣列 4.函式指標 對於普通的陣列,其一大缺點就一旦定義以後就無法改變其大小容量。這其實本質上是靜態記憶體的缺陷。靜態記憶體 對於系統分配的記憶體就是靜態記憶體也叫棧記憶體,比如定義的變數,函式等等都是由系統進行記憶體的分配。因而程式設計師自己無法靈活對其進行更改...

手把手教你學Python之迴圈結構

目錄 while迴圈 for迴圈 迴圈結構巢狀 迴圈結構主要用於需要重複執行某些操作的場景,通過迴圈可以大大降低開發人員的工作量,也是利用程式提公升工作效率的優勢之一。對於迴圈,主要把握以下幾點 什麼時候開始執行迴圈?什麼時候迴圈結束?需要重複操作的內容是什麼?每次操作後,有什麼變化?等。pytho...

手把手教你學Python 的迴圈結構

1 while else 迴圈 當while迴圈正常執行完的情況下,執行else輸出,如果while迴圈中執行了跳出迴圈的語句,比如 break,將不執行else 塊的內容。2 for 迴圈 for迴圈是迭代迴圈,在python中相當於乙個通用的序列迭代器,可以遍歷任何有序序列,如str list ...