在后来的新标准 C99/C11 里面,新增加了一个灵活且好用的特性:指定初始化器(Designated Initialize),这个新特性可以允许程序员在初始化数组或结构体时,可以指定特定的元素初始值,而不需要按照固定的顺序。 一、应用示例 指定初始化器,一般可以应用于数组、结构体、联合体,等成员变量的初始化,以下举例说明一下。 (1...
指定初始化器不仅让初始化的意图更加明确,也避免了因成员顺序错误而导致的潜在问题。 structPoint{intx;inty;intz;};intmain(){// 指定初始化器Point p{.y=99,.x=66};return0;} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 对于嵌套的结构体,指定初始化器也能轻松应对。通过下面示...
1、指定初始化器只能初始化public或protected成员,private成员无法直接指定初始化。 2、指定初始化器不会改变成员的初始化顺序,成员仍然按照它们在类或结构体中声明的顺序初始化。 3、指定初始化器提供了严格的类型检查,确保初始化的值与成员的类型相匹配。
C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化的数组或结构体中的元素顺序相同。但是在新标准 C99 中,增加了一个新的特性:指定初始化器。利用该特性可以初始化指定的数组或者结构体元素。 数组的指定初始化器# 一维数组的指定初始化器# 利用指定初始化器的特性,我们可以这样定义并初始化一个数组: ...
数组的指定初始化器 一维数组的指定初始化器 利用指定初始化器的特性,我们可以这样定义并初始化一个数组: int a[6] = {[4] = 10,[2] = 25}; 1. 上述的初始化就等同于如下方式: int a[6] = {0,0,25,0,10,0}; 1. 可以看到通过这种方式能够不按照顺序,且指定具体的元素进行初始化。
一维数组的指定初始化器 利用指定初始化器的特性,我们可以这样定义并初始化一个数组: 代码语言:javascript 复制 int a[6]={[4]=10,[2]=25}; 上述的初始化就等同于如下方式: 代码语言:javascript 复制 int a[6]={0,0,25,0,10,0}; 可以看到通过这种方式能够不按照顺序,且指定具体的元素进行初始化。除了...
对于一般的初始化,在初始化一个元素后,未初始化的元素都会被设置为0。 下面看一段程序: 代码语言:javascript 复制 /* designate.c--使用指定初始化器 */#include<stdio.h>#defineMONTHS12intmain(void){int days[MONTHS]={31,28,[4]=31,30,31,[1]=29};int i;for(i=0;i<MONTHS;i++){printf("%...
指定初始化器(designated initialize)是C99的新特性,该特性可以执行初始化数组的元素或结构的属性。 1.数组 例如只想初始化数组的最后一个元素,传统的C语法是这样的 intarr[6] = {0,0,0,0,0,212};// 传统C语法 而C99规定,可以在初始化列表中使用带方括号的下标指明带初始化的元素 ...
指定初始化器的概念 C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化的数组或结构体中的元素顺序相同。但是在新标准 C99 中,增加了一个新的特性:指定初始化器。利用该特性可以初始化指定的数组或者结构体元素。 数组的指定初始化器# 一维数组的指定初始化器# ...
Swift为class类型定义了两种构造器来确保它们所有的存储属性都设置了初始值。这两种方式叫做指定构造器和便捷构造器。 指定构造器和便捷构造器 指定构造器是一个类最主要的构造器。指定构造器通过设置所有属性的初值并且调用所有的父类构造器来根据构造链一次初始化所有的属性。