C程序设计谭浩强版总结笔记
結(jié)構(gòu)體
注:結(jié)構(gòu)體類型的名字是由一個關(guān)鍵字struct和結(jié)構(gòu)體名組合而成的(例如struct Student)。結(jié)構(gòu)體名是由用戶指定的,又稱“結(jié)構(gòu)體標(biāo)記”,以區(qū)別于其他結(jié)構(gòu)體類型。上面的結(jié)構(gòu)體聲明中Student就是結(jié)構(gòu)體名(結(jié)構(gòu)體標(biāo)記)
說明
struct 結(jié)構(gòu)體名
{成員列表}
類型名 成員名;
“成員列表”也稱為“域表”
注:
student1 = student2
聲明和定義結(jié)構(gòu)體類型變量
1. 聲明和定義分開
聲明結(jié)構(gòu)體類型
sturct Student student1,student2;
定義結(jié)構(gòu)體
2. 聲明和定義同時進(jìn)行
struct Student {int num;char name[20];char sex;int age;float score; }student1,student2;注:該定義方法的一般形式為
struct 結(jié)構(gòu)體名 {成員列表 }變量名列表;3. 不指定類型名而直接定義
struct {成員表列 }變量名表列;說明:
- 只能對結(jié)構(gòu)體變量賦值而不能對結(jié)構(gòu)體類型賦值。在編譯時,結(jié)構(gòu)體類是不分配空間的,只對變量分配空間。
- 結(jié)構(gòu)體類型中的成員可以與程序中的變量名相同,但二者不代表同一對象。例如,程序中可以另定義一個變量num,它與struct Student中的num是兩回事,相互不干擾。
結(jié)構(gòu)體變量的初始化和引用
【例9.1】把一個學(xué)生的信息(包括學(xué)號、姓名、性別)放到同一個結(jié)構(gòu)體變量中,并輸出這個學(xué)生的信息
#include<stdio.h> int main() {struct Student{int num;char name[20];char sex;int age;// float score;}a={10101,"Li Lin",'M'};printf("學(xué)號:%d,姓名:%d,性別:%d。\n",a.num,a.name,a.sex,a.age);return 0; }定義結(jié)構(gòu)體數(shù)組
{成員列表} 數(shù)組名【數(shù)組長度】;struct Person {char name[20];int count; }leader[3];
定義結(jié)構(gòu)體數(shù)組
【例9.3】有三個候選人,每個選民只能投票選一人,要求編一個統(tǒng)計選票的程序,先輸入被選人的名字,最后輸出各人得票結(jié)果。
指向結(jié)構(gòu)體變量的指針
struct Student *pt【例9.5】通過指向結(jié)構(gòu)體變量的指針變量輸出結(jié)構(gòu)體變量中的成員信息
#include<stdio.h> #include<string.h> int main() {struct Student{long num;char name[20];char sex;float score;};struct Student stu_1;return 0; }注:以下三種等價
指向結(jié)構(gòu)體的指針
【例9.6】有3個學(xué)生的信息,放在結(jié)構(gòu)體數(shù)組中,要求輸出全部學(xué)生的信息
#include<stdio.h> struct Student {int num;char name[20];char sex;int age; }; struct Student stu[3]={{10101,"Li",'M',18}, {10102,"zhangfang",'M',19},{10104,"wangmin",'F',20}}; int main() {struct Student *p;printf("No. Name sex age\n");for(p=stu;p<stu+3;p++>){printf("%5d %-20s %2c %4d\n",p->num,p->name,p->sex,p->age);}return 0; }注:
(++p)->num //先使p自加1,然后得到p指向的元素中num成員值(即10102)
(p++)->num//先求得p->num的值(即10101),然后再使得p自加1,指向stu[]
用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針做函數(shù)參數(shù)
struct Student {int num;char name[20];float score[3];float aver; }1. 結(jié)構(gòu)體變量做函數(shù)參數(shù)
void input(struct Student stu);2. 結(jié)構(gòu)體變量的指針/數(shù)組做函數(shù)參數(shù)
void input(struct Student stu[]);指針處理鏈表
注:C程序設(shè)計 譚浩強版此處有9.4節(jié)“用指針處理鏈表”本人將其歸類到了第八章指針中
共用體
格式:
union 共用體名
{成員表列}變量表列;
例如
注:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。而共用體變量所占的內(nèi)存長度等于最長成員的長度。
引用共用體變量
a.i a.ch a.f特點
注:共用體類型一般用在兩個組數(shù)據(jù)的成員大部分相同的情況之下。例如,有學(xué)生和老師兩組數(shù)據(jù),學(xué)生的成員包括:姓名、號碼、性別、職業(yè)、班級。教師的成員包括:姓名、號碼、性別、職業(yè)、職務(wù)。這兩組數(shù)據(jù)只有班級和職務(wù)不同,因此可以定義成如下的共用體:
枚舉類型
注:枚舉類型放在了第3章“順序程序設(shè)計”
typedef聲明新類型名
注:typedef聲明新類型名放在了第3章“順序程序設(shè)計”
總結(jié)
以上是生活随笔為你收集整理的C程序设计谭浩强版总结笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Twitter数据采集案例
- 下一篇: 在3DMAX中为动画添加根骨骼运动