打比賽的時候發現struct還是不怎么用的習慣,有些東西縷不太順,所以仔細學習一下。
一. 首先是結構體的聲明
定義結構變量的一般格式為:
struct 結構名 {
類型 變量名;
類型 變量名;
......
} 結構變量;
結構名是結構的標識符不是變量名。 類型為第二節中所講述的五種數據類型(整型、浮點型、字符型、指針型和無值型)。
有一下三種寫法:
struct String{ char name[8]; int age; char sex[2]; char depart[20]; float wage1,wage2,wage3,wage4,wage5; }person; struct String{ char name[8]; int age; char sex[2]; char depart[20]; float wage1,wage2,wage3,wage4,wage 5; }; struct String person; struct{ char name[8]; int age; char sex[2]; char depart[20]; float wage1,wage2,wage3,wage4,wage5; }a,b;
三者之間的區別:
1、第一種定義了一個結構名為String的結構變量preson,如果生略變量名person,則變成對結構的說明。用已說明的結構名也可定義結構變量。就可以變成第二種了。
2、第二種 是定義了一個結構名為Sting的結構體。如果要多聲明幾個變量名,則世界在后面struct String a,b,c,d....;直接來用。
3、第三種是省略了結構名。如果省略結構名, 則稱之為無名結構, 這種情況常常出現在函數內部。
另外,結構體也有數組的功能。
struct student{ int num; char name[20]; int age; }stu[2];
我們定義了一個結構體類型是struct student,它有三個成員分別是num, name, age。用這樣的結構體類型定義了一個結構體數組stu[2],該數組有兩個元素,分別是 stu[0], stu[1].那如何給數組元素中的成員賦值呢?
結構體數組的引用:
stu[0].num = 100;
strcpy( stu[0].name,“Zhangsan” );
stu[0].age = 18;
來個簡單的樣例:
#include<iostream> #include<algorithm> using namespace std; struct student{ int num; char name[20]; float score; }stu[3]={ {101,"aa",49}, {102,"bb",88}, {103,"cc",99} }; int main(){ int num=0; float ave,sum=0; for(int i=0;i<3;i++){ sum+=stu[i].score; if(stu[i].score<60) num++; } ave=sum/5; cout<<ave<<" "<<num<<endl; return 0; }