结构体(一)

一、结构体的定义

        结构体是一种构造型数据类型,使用户自定义的新数据类型。

        在结构体中可以包含若干个不同数据类型和不同意义的数据项,使这些数据项组合起来反映某一个信息。

        形式:

                struct  结构体名

                {

                        数据类型   成员名1;

                        数据类型   成员名2;

                        ......

                };

        解释:

                花括号中的内容称为“成员列表" 或“域表”。

                每个成员名的命名规则与变量名的相同。

                数据类型可以是基本数据类型、结构体类型、联合体类型和枚举类型等。

                使用分号作为结束符,整个结构体的定义也是使用分号作为结束符。

        注意:

                结构体类型中的成员名可以和程序中的变量名相同,二者并不代表同一个对象,编译器可以自动对他们进行区分。

                结构体类型属于C语言的一种数据类型,与整型、浮点型相当。因此,定义它时不分配空间,只有当用它定义

                变量时才分配空间。

二、结构体变量的声明

       (1)先定义结构体类型,再定义变量

                struct  结构体名

                {

                        数据类型  成员名;

                        数据类型  成员名;

                        . . . . . .

                } ;

                struct  结构体名  变量名;   //“struct  结构体名”这个整体表示结构体类型,二者缺一不可

    (2)在定义结构体类型的同时,定义变量

                struct   结构体名

               {

                        数据类型  成员名;

                        数据类型  成员名;

                        . . . . . .

                }变量名;

    (3)直接定义结构体变量

                struct  

                {

                        数据类型  成员名;

                        数据类型  成员名;

                        . . . . . .

                }变量名;

                如果省略结构体名,则称之为无名结构体,这种情况常出现在函数中。

                因为缺少结构体名,所以不能在程序的的其它地方再定义结构体变量。

    (4)结构体变量的大小

            一个结构体变量占用内存的实际大小,实际上是该变量中所有的成员所占内存的总和。可以通过sizeof求出:

                sizeof(变量名)   或   sizeof(struct  结构体名)

三、结构体变量的使用

        结构体变量是不同数据类型的若干个数据的集合体。

        在程序中使用结构体变量时,不能把它作为一个整体参与数据处理,而参与各种运算和操作的是

        结构体变量中的各个成员项数据。

        形式:

                变量名 . 成员名

        注意:

                不能将一个结构体变量作为一个整体加以引用,而是对结构体变量中的各个成员分别引用。

                如果成员又是一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员,

                只能对最低级的成员进行操作。

                在C程序中,同一结构体类型的变量之间允许相互赋值,而不同结构体类型的变量之间不允许相    

                互赋值,即使两者包含同样的成员。

        结构体变量间的比较:

                当对两个结构体变量进行比较时,可以进行逐个成员的比较,也可以使用内存比较函数memcmp。

                        头文件:string.h

                        函数原型:int  memcmp(const void *s1,const void *s2,size_t n);

                        函数功能:比较两段内存中的值是否相等。

                        参数:

                                    s1----->第一段内存的起始地址

                                    s2----->第二段内存的起始地址

                                    n------>比较大内存的大小

                        返回值:

                                    0---->两段内存的值相等

                                    大于0---->第一段内存的值大于第二段内存的值

                                    小于0---->第一段内存的值小于第二段内存的值

四、结构体变量的初始化

        为结构体变量中的每个成员赋初值,称为结构体变量的初始化。

        (1)在定义结构体变量时进行初始化

                struct  结构体名  变量名 = {初始化列表};

        (2)在定义结构体类型时进行结构体变量的初始化

                struct  结构体名

                {

                        数据类型  成员名;

                        数据类型  成员名;

                        . . . . . . 

                }变量名 = {初始化列表} ;

        (3)在直接定义结构体变量时进行初始化

                struct 

               {

                        数据类型  成员名;

                        数据类型  成员名;

                        . . . . . . 

                }变量名 = {初始化列表} ;

猜你喜欢

转载自blog.csdn.net/m0_37671794/article/details/80369024
今日推荐