码迷,mamicode.com
首页 > 编程语言 > 详细

C++自定义数据类型之结构

时间:2015-02-23 09:42:58      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:c++   编程   

       结构

       结构是数目固定不同数据类型的若干变量的集合。实际上,结构也可以是相同变量的集合。

       定义结构变量应先定义结构,任何一个结构变量都具有某种结构模式。结构模式是结构变量所属的形式,一个结构模式可以定义若干个结构变量。

       结构模式的定义格式

        struct     <结构名>

        {

               <若干成员说明>(给出每个成员的名字和类型)

         };

        结构变量的定义格式:  

        struct   <结构名>  <结构变量名表>

        例如:

        struct    student

        {

              char    name;

              int     age;

              char     sex;

              struct   date  birthday; (结构变量)

         }c1,*p,a[12];

         struct   date

         {

              int   year,month,day;

         };

        一个结构的结构变量也可以作为另一个结构的成员。而结构的成员是不同的数据类型。结构变量可以是一般的结构变量,也可以是指向结构变量的指针,还可以是结构数组。(结构数组是数组元素为结构变量的数组)

       定义结构变量可以在定义结构模式后单独定义,也可以在定义结构模式的同时进行定义。上述的结构变量就是在定义结构模式的同时定义结构变量的,来看看分开单独定义的:

       struct   card

       {

            int   a;

            char   b;

        };

        struct   card   s1,s2,*pi,d[12];

        结构变量成员的表示;

        一般结构变量的成员的表示方法是用运算符“.”将.结构变量名与成员名连接起来:

        <结构变量名>.<成员名>    s1.a

        指向结构变量的指针的成员的表示方法是用运算符“->”将指向结构变量的指针名和成员名连接起来:

        <结构变量指针名>-><成员名>   pi->b

        指向结构变量的指针的成员的表示方法也可以是:

        (*<结构变量指针名>).<成员名>   (*pi).b

        结构变量的赋值:

       1结构变量赋初值:

        结构变量赋初值的方法是使用初始值表,初始值表中给定的数据项的顺序应与定义时各成员的顺序一致。

        一般结构变量赋初值:struct  card  c1={1,‘s‘};

        指向结构变量指针赋初值: struct  card  *pi=&c1;(&c1表示结构变量c1的地址值)

        结构数组赋初值; struct  card  s[2]={{1,‘s‘},{2,‘s‘}};

        2结构变量赋值:  

         一般结构变量赋值:struct.old=23;struct.birthday.day=15;

        指向结构变量指针赋值: pi->birthday.year=2017;

        结构数组赋值; s[2].name="wang yan";

        在两个结构变量具有相同的结构模式下还可以将一个结构变量整个赋值给另一个结构变量。

        struct  card  c1={1,‘s‘},c2;

        c2=c1;

        结构变量的运算:

        结构变量的运算主要是指结构变量成员的运算,结构变量在整体上只有赋值运算

        写一个程序:      

#include <iostream.h>
struct student
{
	char *name;
	long stu_no;
	float math;
	float english;
};
void main()
{
	static struct student s1={"Ma jing",99012,89.0,78.5},
		                  s2={"Lu ping",99023,90.0,85.5};
	float m1,m2;
	m1=(s1.math+s1.english)/2;
    m2=(s2.math+s2.english)/2;
	cout<<s1.name<<'\t'<<m1<<endl;
    cout<<s2.name<<'\t'<<m2<<endl;
}

输出的结果:Ma jing  83.75

                      Lu ping  87.75

       

        

        

            

 

     

     

C++自定义数据类型之结构

标签:c++   编程   

原文地址:http://blog.csdn.net/erlian1992/article/details/43908747

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!