Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

กำหนด Initializers ใน 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("\nArray[%d] = %d\n",80, Array[80]);
      printf("Array[%d] = %d\n",42, Array[42]);
      printf("Size of this array: %ld\n", 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 = 'f', .x = 78};
   struct myStruct str2 = {.z = 'r'};
   printf ("x = %d, y = %f, z = %c\n", str1.x, str1.y, str1.z);
   printf ("z = %c\n", str2.z);
}

ผลลัพธ์

x = 78, y = 2.324000, z = f
z = r