对C语言 结构体 和 结构变量
一、結(jié)構(gòu)體/結(jié)構(gòu)的引入
在學(xué)生的登錄記錄表中,姓名應(yīng)該為字符型、學(xué)號可以為整形或字符型,年齡應(yīng)該為整形,性別應(yīng)該為字符型,成績可以整形或?qū)嵭汀o@然不能用一個數(shù)組來存放這一組數(shù)據(jù),因為數(shù)組各元素的類型和元素都必須一致。
二、定義結(jié)構(gòu)
為了定義結(jié)構(gòu),必須用struct語句。struct語句定義了一個包含多個成員的新的數(shù)據(jù)類型。
Struct 結(jié)構(gòu)名 { 成員列表; }變量名列表;Struct stu { Int num; Char name[20]; Char sex; Float score; }boy1,boy2;三、定義結(jié)構(gòu)變量的三種方式
1.先定義結(jié)構(gòu),再說明結(jié)構(gòu)變量 struct stu { int num; char name[20]; int age; }; struct stu boy1,boy2;例如: #define STU struct stu STU { int num; char name[20]; int age; }; STU boy1,boy2; 2.在定義結(jié)構(gòu)類型的同時說明結(jié)構(gòu)變量。 struct stu { int num; char name[20]; int age; }boy1,boy2; 3.直接說明結(jié)構(gòu)變量 struct { int num; char name[20]; int age; }boy1,boy2;?四、結(jié)構(gòu)體嵌套
首先定義一個date,由month(月),day(日),year(年)三個成員組成。在定義并說明變量boy1和boy2時,其中的成員birthday被說明為date結(jié)構(gòu)類型。成員名可以與其他的變量同名,互不干擾。
Struct date{Int month;Int day;Int year;};Struct {Int num;Char name[20];Char sex;Struct date birthday;Float score;}boy1,boy2;Num | Name | Sex | Birthday | score | ||
Month | Day | year | ||||
?五、結(jié)構(gòu)變量
? ?5.1 ?結(jié)構(gòu)變量成員的表示方法
在程序中使用結(jié)構(gòu)變量時,往往不把他作為一個整體來使用。
在程序中具有相同類型的結(jié)構(gòu)變量可以相互的賦值,一般結(jié)構(gòu)變量的使用,包括賦值、輸入、輸出、運算等都是通過結(jié)構(gòu)變量的成員來實現(xiàn)的。
結(jié)構(gòu)變量成員的一般形式:
結(jié)構(gòu)變量名.成員名???例如:boy1.num ?即第一個人的學(xué)號。
**如果成員變量本身就是一個結(jié)構(gòu),那么需要逐級找到最低級的成員才能使用。
例如:boy1.birthday.month 即第一個人出生的月份。
? ?5.2 ?結(jié)構(gòu)變量的賦值
結(jié)構(gòu)變量的賦值就是給各個成員賦值,可以用輸入語句或者賦值語句來完成。
/*
本程序中用賦值語句給num和name兩個成員賦值,name是一個字符串常量。用sacanf函數(shù)動態(tài)的輸入sex和score成員值,然后就把boy1的所有的成員的值整體賦值于boy2。最后分別輸出boy2的各個成員值,
本示例表示了結(jié)構(gòu)變量的賦值,輸入和輸出狀態(tài)。
*/
#include<stdio.h> #include<string.h> #include<stdlib.h> int main(int argc,char **argv) {struct stu {int num;char name[20];char sex[20];float score;}boy1,boy2;boy1.num = 102;strcpy(boy1.name,"shi wen jie");printf("please input sex and score:\n");scanf("%s %f",boy1.sex,&boy1.score);boy2 = boy1;printf("num\tname\t\tsex\tscore\n");printf("num=%d\tname=%s\tsex=%s\tscore=%f\n",boy2.num,boy2.name,boy2.sex,boy2.score);return 0; }? ?5.3 ?結(jié)構(gòu)變量的初始化
和其他類型的變量一樣,對結(jié)構(gòu)變量可以在定義時進行初始化賦值。
#include<stdio.h> int main(int argc,char **argv) {struct stu{int num;char *name;char sex[20]; //或者是char *sex;float score;}boy2,boy1 = {102,"shi wen jie","nan",65.7};boy2 = boy1;printf("num\tname\tsex\tscore\n");printf("num=%d\tname=%s\tsex=%s\tscore=%f\n",boy2.num,boy2.name,boy2.sex,boy2.score); }總結(jié)
以上是生活随笔為你收集整理的对C语言 结构体 和 结构变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: malloc和free——结构体中动态内
- 下一篇: 对C语言 结构数组 指向结构变量的指针