• C99C新增内容


        继上一篇复合文字之后,今天我们继续谈一谈C99C的新特性。

       C99标准是继C89标准之后的第二个C语言官方标准,于1999年12月1日正式发布,其中对数据类型(增加了对_Bool),关键字(增加了inline restrict关键字)等方面的增加无疑给我们编程 带来了诸多便利。

      1.指定初始化符

          指定的初始化符通常有两种用法:用于数组和用于结构和联合

        (1)用于数组

              用于数组的格式:[index] = vol;  其中,index表示数组的下标,vol表示本数组元素的初始化值。例如:

    int x[10] = {[0] = 10, [5] = 30}; //其中x[5],x[10]得到了初始化

        (2)用于结构和联合

             用于结构或联合的格式如下:member-name(成员名称),对结构进行指定的初始化时,允许采用简单的方法对结构中的指定成员进行初始化。例如:

    struct example{ int k, m, n; } object  = {m = 10, n = 200};  

            注:对结构成员进行初始化的顺序没有限制。

      2.伸缩型数组

        C99C的另一个很让人欣喜的特性是伸缩型数组,它用于结构体中。这个特性可以声明最后一个成员是一个具有特殊属性的数组。该特使属性有两点,1.这个数组不存在,至少不是立即存在的。2.我们可以编写代码适当的使用该数组成员,就像它确实存在而且拥有你需要的任何数目的元素一样。听起来很奇怪,我们看一些例子:

    struct flex
    {
      int count;
      double average;
      double score[];
    };

         伸缩型数组的一些使用规则:  

            (1)伸缩型数组成员必须是最后一个数组成员。
            (2)结构中必须至少有一个其他成员。
            (3)伸缩型数组就像普通数组一样被声明,除了他的方括号是空的。
    struct flex ptr;
    ptr = malloc(sizeof(struct flex) + 5*sizeof(double));//现在我们有了足够的内存,以存储count,average和5个double型数值的数组了。可以使用ptr来访问它们类了:
    ptr->count = 5;
    ptr->score[2] = 12.3;

             这样你就可以在任何时候修改结构体占用空间的大小了。

     

  • 相关阅读:
    RabbitMQ学习之:(八)Topic Exchange (转贴+我的评论)
    RabbitMQ学习之:(六)Direct Exchange (转贴+我的评论)
    抽象类
    开闭原则
    反射
    解决默认方法冲突
    单一职责原则
    java四种访问修饰符
    Java中基本类型和包装类
    方法在继承过程中可能出现的问题
  • 原文地址:https://www.cnblogs.com/2992896672-xiaosha/p/4871551.html
Copyright © 2020-2023  润新知