C语言 结构 基础

C语言 结构 基础

C语言使用结构变量(structure variable)进一步增强了表示数据的能力

1.结构声明

   例:struct book{
            char title[MAXTITL];
            char author[MAXAUTL];
            float value;
            }
  • 该声明描述了一个由两个字符数组和一个float变量组成的结构。
  • 首先使用关键字struct,它表示接下来是一个结构。后面是一个可选的标记(单词book),它是用来引用该结构的快速标记。
  • 在结构声明中,接下来是一对花括号括起来的结构成员列表。每个成员变量都用它自己的声明来描述,用一个分号结束描述。每个成员可以是任何一种C语言数据类型,甚至可以是其他结构!

因此,以后我们就可以这样声明:

struct book library;//它把library声明为一个使用book结构设计的变量

2.定义结构变量

创建结构变量:

struct book library;
          看到这条指令,编译器会创建一个变量library。 编译器使用book模板(结构声明
 也叫做模板) 为该变量分配空间:一个具有MAXTITL个元素的char数组,一个具有
 MAXAUTL个元素的char数组和一个float变量。这些存储空间是以一个名字library被
 结合到一起的。

下图为存储空间分配图:
存储空间分配

声明结构的过程和定义结构变量的过程可以被合并成一步,如下所示:

   例:struct {
            char title[MAXTITL];
            char author[MAXAUTL];
            float value;
            }library;

3.访问结构成员

使用结构成员运算符点(.),例如library.value就是指library的value部分。

4.声明和初始化结构体指针

(1)声明

struct book *pointer;//这个声明不是建立一个新的结构,而是意味着指针pointer现在可以指向任
                                           //何现有的book 类型的结构。
                                           //例如,如果barney是book类型的结构,可以这样做:book=&barney;
                                          //和数组不同,一个结构的名字不是该结构的地址,必须使用&符号。
  • 这个声明不是建立一个新的结构,而是意味着指针pointer现在可以指向任何现有的book 类型的结构
  • 例如,如果barney是book类型的结构,可以这样做:book=&barney;
  • 和数组不同,一个结构的名字不是该结构的地址,必须使用&符号。

(2)使用指针访问成员

  • 使用运算符->
    后跟->运算符的结构指针和后跟.(点)运算符的结构名是一样的,即pointer->value与library.value是一样的。pointer->title是一个float变量
  • 下列表达式是等价的:
library.value == (*pointer).value == pointer->value;//假设poniter == &library
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值