首页 > 后端开发 > C++ > 在C语言中的指定初始化器

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

王林
发布: 2023-09-01 08:49:06
转载
917 人浏览过

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

在C90标准中,我们必须按固定顺序初始化数组,例如在位置0、1、2等处初始化索引。从C99标准开始,他们在C中引入了指定初始化功能。这里我们可以按随机顺序初始化元素。可以使用数组索引或结构成员来完成初始化。这个扩展在 GNU C++ 中没有实现。

如果我们指定一些索引并输入一些值,那么它将看起来像这样 -

int arr[6] = {[3] = 20, [5] = 40}; or
int 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("</p><p>Array[%d] = %d</p><p>",80, Array[80]);
      printf("Array[%d] = %d</p><p>",42, Array[42]);
      printf("Size of this array: %ld</p><p>", sizeof(Array) / sizeof(Array[0]));
}
登录后复制

输出

10 20 30 100 100 100 100 100 100 100 65 15 0 0 0 0 0 0 0 0
Array[80] = 50
Array[42] = 400
Size of this array: 81
登录后复制

这种指定的初始化也可以对结构或联合类型对象执行。对于它们,我们可以使用成员变量的名称以任何顺序在开头加上一个点(.)来初始化变量。为了获得清晰的想法,请检查下面的代码。

示例代码

#include <stdio.h>
struct myStruct {
   int x;
   float y;
   char z;
};
int main() {
   struct myStruct str1 = {.y = 2.324, .z = &#39;f&#39;, .x = 78};
   struct myStruct str2 = {.z = &#39;r&#39;};
   printf ("x = %d, y = %f, z = %c</p><p>", str1.x, str1.y, str1.z);
   printf ("z = %c</p><p>", str2.z);
}
登录后复制

输出

x = 78, y = 2.324000, z = f
z = r
登录后复制

以上是在C语言中的指定初始化器的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板