C语言 —— 结构体

一、条件编译

1、 根据宏是否定义

  •  #ifdef    .......#else ................  #endif

2、根据宏定义的值

  • #define  DEFINE  1
  • #if  DEFINE     .......#else ................  #endif

 

二、C语言中结构体

1、概念

       — —   结构体时用户自定义的新数据类型,在结构体中可以包含若干个不同数据类型和不同意义的数据项(当然也可以是相同),从而是这些数据项组合起来反应某一个信息。

       — —   例如,可以定义一个职工worker结构体,在这个结构体中包括职工编号、姓名、性别、年龄、工资、家庭住址、联系电话,这样就可以用一个结构体数据类型的变量来存放某个职工的所有相关信息。并且,用户自定义的数据类型worker也可以与Int、double等基本数据类型一样,用来作为定义其他变量的数据类型。

 

例子: struct   结构体名

             {

                    数据类型          成员名1;

                    数据类型          成员名2;

                    ..................................

                    数据类型          成员名n;

             };

2、说明:

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

最后,总结一下结构体类型的特点:

          (1) 结构体类型时用户自行构造的。

          (1)它由若干不同的基本数据的数据构成。

          (1) 它属于C语言的一种数据类型,与整形、实型相当。因此,定义它时不分配空间,只有它定义变量时才分配空间。

3、定义变量

struct   结构体名

             {

                    数据类型          成员名1;

                    数据类型          成员名2;

                    ..................................

                    数据类型          成员名n;

             };

(1)定义: struct   结构体名  s1、s2。

struct  结构体名

             {

                    数据类型          成员名1;

                    数据类型          成员名2;

                    ..................................

                    数据类型          成员名n;

             }变量名1、变量2;

(2)直接使用变量名1、变量2

struct  

             {

                    数据类型          成员名1;

                    数据类型          成员名2;

                    ..................................

                    数据类型          成员名n;

             }变量名;

(3)定义: 变量名  s1、s2。

3、结构体属性

1、大小

           一个结构体变量占用内存的实际大小,也可以利用sizeof求出。他的运算表达式为:sizeof(运算量)

2、结构体变量的使用形式

           结构体变量是不同数据类型的集合体。在程序中使用结构体变量时,一般情况下不能把它作为一个整体参加数据处理,而参加各种运算和操作的是结构体变量的各个成员项数据。

3、注意

  • 不能将一个结构体类型变量作为一个整体加以引用,而只能对结构体类型变量中的各个成员分别引用。
  • 在数组中,数组是不能彼此赋值,而结构体类型变量之间允许相互赋值,而不同结构体类型的结构体变量之间不允许相互赋值,即使两则包含同样的成员。

三、结构体数组

1、结构体数组的定义

   —   具有相同结构体类型的结构体变量也可以组成数组,称它们为 结构体数组。

   —   定义结构体数组的方法和定义结构体变量的方法相仿,只需说明其为数组即可。

     可采用三种方法:与以上 定义结构体变量方法相识。

 2、结构体数组的初始化

  • 结构体数组中的结构比较的复杂,在初始化结构体时要时时将数据与变量对应好。

3、结构体指针

  • 可以设定一个指针变量来指向一个结构体变量。此时该指针变量的值是结构体变量的起始地址,该指针称为结构体变量。

                                           struct   结构体名   *结构体指针名

  • 当表示指针变量p所指向的结构体变量中的成员是,”(*结构体指针名).成员名“这种表示形式总是需要使用圆括号,显得很不简练。因此,对于结构体指针指向的结构体成员项,给出了另外一种简洁的表示方法,如下表示:

                                           结构体指针名 -> 成员名

                    它与前一种表示方法在意义上是完全等价的。例如,结构体指针P指向的结构体

                                         ( *p).name 或    p -> name

四、C语言中的共用体

1、在C语言中,不同的数据类型可以使用共同的存储空间,这种数据构造类型称为共用体,简称共用,也叫联合体。

2、定义一个共用体的一般形式为:

                                   union    共用体名

                                    {

                                          成员列表;

                                     };

3、共用体的初始化、命名方式与结构体大体相同,唯一不同的是,共用体中的所有数据共用一个数据存储空间。

例如:

                                   union    stduent

                                    {

                                          int age;

                                          char name[3];

                                          double  source;

                                     };

      — —    该共用体中的的内存空间不是 三个变量 内存之和,而是其中占用内存最大的一个变量空间,三者之间如果一起赋值,将以最后一次赋值结果为准。

五、typedef

1、typedef 的作用:将已有的数据类型 重新 定义个新的名字。

          例如  : typedef   int   DATA        ----------  则DATA也可以完全代替int来使用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值