struct结构体

打比赛的时候发现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;
}

 

posted @ 2019-03-27 19:07  wushuyng  阅读(1533)  评论(0编辑  收藏  举报