zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    集训日记
    各种考试
    树上差分
    树的直径
    讲课
    adb常用命令
    关于appium的简单理解
    使用appium过程中常遇到的坑以及解决方案
    JMeter面试题
    fiddler面试题
  • 原文地址:https://www.cnblogs.com/xueyang/p/2389835.html
Copyright © 2011-2022 走看看