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 = 'f', .x = 78}; struct myStruct str2 = {.z = 'r'}; 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!