首頁 >後端開發 >C++ >在C語言中的指定初始化器

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

王林
王林轉載
2023-09-01 08:49:06896瀏覽

在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刪除