您好,欢迎访问一九零五行业门户网

在C语言中的指定初始化器

在c90标准中,我们必须按固定顺序初始化数组,例如在位置0、1、2等处初始化索引。从c99标准开始,他们在c中引入了指定初始化功能。这里我们可以按随机顺序初始化元素。可以使用数组索引或结构成员来完成初始化。这个扩展在 gnu c++ 中没有实现。
如果我们指定一些索引并输入一些值,那么它将看起来像这样 -
int arr[6] = {[3] = 20, [5] = 40}; orint arr[6] = {[3]20, [5]40};
这相当于:
int arr[6] = {0, 0, 0, 20, 0, 40};
我们还可以使用以下语法放置一些元素范围:[first … last] = value。
int arr[6] = {[2 … 4] = 10};
这相当于:
int arr[6] = {0, 0, 10, 10, 10, 0};
如果数组的大小没有定义,那么可以从最大索引位置开始获取大小。让我们看看代码以获得更好的想法。
示例代码#include <stdio.h>int main() { int array[] = {10, 20, 30, [3 ... 9] = 100, [10] = 65, 15, [80] = 50, [42] = 400 }; int i; for (i = 0; i < 20; i++) printf("%d ", array[i]); printf("
array[%d] = %d
",80, array[80]); printf("array[%d] = %d
",42, array[42]); printf("size of this array: %ld
", sizeof(array) / sizeof(array[0]));}
输出10 20 30 100 100 100 100 100 100 100 65 15 0 0 0 0 0 0 0 0array[80] = 50array[42] = 400size of this array: 81
这种指定的初始化也可以对结构或联合类型对象执行。对于它们,我们可以使用成员变量的名称以任何顺序在开头加上一个点(.)来初始化变量。为了获得清晰的想法,请检查下面的代码。
示例代码#include <stdio.h>struct mystruct { int x; float y; char z;};int main() { struct mystruct str1 = {.y = 2.324, .z = 'f', .x = 78}; struct mystruct str2 = {.z = 'r'}; printf ("x = %d, y = %f, z = %c
", str1.x, str1.y, str1.z); printf ("z = %c
", str2.z);}
输出x = 78, y = 2.324000, z = fz = r
以上就是在c语言中的指定初始化器的详细内容。
其它类似信息

推荐信息