C结构入门

设计程序最重要的一个步骤就是选择一个表示数据的好方法。在多数情况下,使用简单的变量或数组都是不够的。C结构变量(structure variable)进一步增强了表示数据的能力。C的结构的基本形式就足以灵活地表示多种数据,并且它还使你能够创建新的形式。如果你熟悉Pascal语言的“记录”的话。你对C的结构就不会陌生了。

现今常用的有struct ,union ,enum三种数据类型。

结构的声明(structure declaration)是描术结构如何组合的主要方法。如下:

struct book{

  char *title;

  char *author;

  float value;

};

这样的一个声明描述了一个由两个cahr型指针的变量和一个float型的变量。它并没有创建实际的数据对象,而是描述了组成这类对象的元素(它就如同一个模版一样)。你可以用关键字struct,表示接下来的一个结构。

struct book library;  //这里的library声明为一个使用book结构设计的结构变量,这时就创建了数据对象,并为结构library分配了结构所需要的内存空间。这里的book只表示一种数据类型而已,在同一个程序中还可以声明其它的结构变量。如:

struct book diskbook;

同样可以同时定义多个结构变量,甚至可以定义一个指向该结构的指针。如:

struct book pansh,*ptbook;

这个里的每一个结构变量均包含 title, author和value部分。

你也可以这样声明:

struct book{

  char * title;

  char * author;

  float value;

}library;    /*在定义这后跟变量名*/

即:声明结构的过程和定义结构变量的过程合并成一步。还有一种情况就是无需标记的情况。如:

struct {    /*无标记*/

  char * title;

  char * author;

  float value;

}library;

这种情况不能够多次使用一个结构模版。如果你想多次使用一个结构模版,就需要使用带有标记的形式;或者使用typedef方法。

初始化结构

如:

struct book library{

  "C language",

  "Renee Vivotte",

  1.38

}; 

如里想只初始化其中的一部分要如何实现呢?请看最后。

注意:初始化要用大括号括起来,每个项目用逗号分隔,并且要与结构成员类型相匹配。

 

现在说了半天只是说的如何申明一个结构,现在说说如何使用它。

结构就像是一个“超级数组”,数组是使用每个元素的标号元素进行访问,那么结构的各个成员要如何访问呢?

我们可以用一个结构运算符点(.)。如:

library.value就是指library中的value元素。所以你可以这样使用它:

  scanf("%f",&library.value);    /*这里的.比&拥有更高的优先级*/

  gets (library.author);

如里想只初始化其中的一部分,你可以这样做:

struct book library ={    /*注意这里的等号*/

  .value = 25.99,      /*这里同样用逗号分隔*/

  .author = "Stallman"

};

即:指定初始化元素的初始值。

对特定成员的最后一次赋值是它实际获得的值。如:

struct book library = {

  .value = 25.99,     

  .author = "Stallman",

  0.38

}

value 得到的值是最后一次赋给value的值。即:  value 的值是0.38

posted @ 2012-03-11 10:20  blunsmith  阅读(1046)  评论(1编辑  收藏  举报