对C语言 结构体 和 结构变量
一、結構體/結構的引入
在學生的登錄記錄表中,姓名應該為字符型、學號可以為整形或字符型,年齡應該為整形,性別應該為字符型,成績可以整形或實型。顯然不能用一個數組來存放這一組數據,因為數組各元素的類型和元素都必須一致。
二、定義結構
為了定義結構,必須用struct語句。struct語句定義了一個包含多個成員的新的數據類型。
Struct 結構名 { 成員列表; }變量名列表;Struct stu { Int num; Char name[20]; Char sex; Float score; }boy1,boy2;三、定義結構變量的三種方式
1.先定義結構,再說明結構變量 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.在定義結構類型的同時說明結構變量。 struct stu { int num; char name[20]; int age; }boy1,boy2; 3.直接說明結構變量 struct { int num; char name[20]; int age; }boy1,boy2;?四、結構體嵌套
首先定義一個date,由month(月),day(日),year(年)三個成員組成。在定義并說明變量boy1和boy2時,其中的成員birthday被說明為date結構類型。成員名可以與其他的變量同名,互不干擾。
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 | ||||
?五、結構變量
? ?5.1 ?結構變量成員的表示方法
在程序中使用結構變量時,往往不把他作為一個整體來使用。
在程序中具有相同類型的結構變量可以相互的賦值,一般結構變量的使用,包括賦值、輸入、輸出、運算等都是通過結構變量的成員來實現的。
結構變量成員的一般形式:
結構變量名.成員名???例如:boy1.num ?即第一個人的學號。
**如果成員變量本身就是一個結構,那么需要逐級找到最低級的成員才能使用。
例如:boy1.birthday.month 即第一個人出生的月份。
? ?5.2 ?結構變量的賦值
結構變量的賦值就是給各個成員賦值,可以用輸入語句或者賦值語句來完成。
/*
本程序中用賦值語句給num和name兩個成員賦值,name是一個字符串常量。用sacanf函數動態的輸入sex和score成員值,然后就把boy1的所有的成員的值整體賦值于boy2。最后分別輸出boy2的各個成員值,
本示例表示了結構變量的賦值,輸入和輸出狀態。
*/
#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 ?結構變量的初始化
和其他類型的變量一樣,對結構變量可以在定義時進行初始化賦值。
#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); }總結
以上是生活随笔為你收集整理的对C语言 结构体 和 结构变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: malloc和free——结构体中动态内
- 下一篇: 对C语言 结构数组 指向结构变量的指针