数组指定初始化器

C99增加了一个新特性:指定初始化器。利用该特性可以初始化指定的数组元素。例如,只初始化数组中的最后一个元素。对于传统的的C初始化语法,必须初始化最有一个元素之前的所有与还俗,才能初始化它:

int arr[6]={0,0,0,0,0,212];//传统的语法

而使用C99的新特性:

int arr[6]={[5]=212};

这样写和上面的结果是一样的,由于前几个元素没有初始化,所以编译器会自动把它们设置为0。

如果指定初始化器后面有更多的值,如:

int arr[8]={[5]=212,3,4};

这个时候arr[6]就初始化3,另外如果再次初始化之前指定的元素,那么最后的初始化将会取代之前的初始化。

如果未指定数组元素的大小的话

如:int arr[]={1,[6]=23,4}

这个时候编译器会把数组的大小设置为足够装得下初始化的值。上面这个数组的长度就是8.

原文地址:https://www.cnblogs.com/god-of-death/p/10220405.html