728x90
ㅇ복합 리터럴이란???
복합 리터럴은 C99에 추가된 기능이다.
함수에 배열을 넘겨줄 때 복합 리터럴을 사용하면, 배열을 따로 선언하지 않아도 됨.
-
(자료형[]){값1, 값2, 값3}
-
(자료형[크기]){값1, 값2, 값3}
- 예제
#include <stdio.h>
void printArray(int arr[], int count)
{
for (int i = 0; i < count; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
// 복합 리터럴 방식으로 배열을 넘겨줌
printArray((int[]) { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 10);
return 0;
}
예제를 보면, 매개변수에 배열을 넣어주는데, 이것을 복합 리터럴 이라고 함.
ㅇ 배열 매개변수 요소의 최소 개수 지정
함수의 배열 매개변수에 static과 숫자를 사용하면 요소의 최소 개수를 지정할 수 있음.
이렇게 하면 매개변수로 들어온 배열의 요소 개수가 지정된 개수보다 작으면 경고 발생.
(GCC, Clang에서만 지원)
반환값자료형 함수이름(자료형 매개변수[static 최소개수])
{
}
- 예제
#include <stdio.h>
void printArray(int arr[static 5], int count) // 배열 요소의 최소 개수를 5개로 지정
{
for (int i = 0; i < count; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
int numArr1[5] = { 1, 2, 3, 4, 5 };
// 요소 개수가 5개이므로 OK
printArray(numArr1, sizeof(numArr1) / sizeof(int));
int numArr2[3] = { 1, 2, 3 };
// 요소 개수가 3개이므로 경고
printArray(numArr2, sizeof(numArr1) / sizeof(int));
return 0;
}
?? GCC환경에서 테스트 해봤는데 일단 안됨,
출처 : 코딩도장(dojang.io/mod/page/view.php?id=570)
728x90
'고흐의 연구실 > C언어와 C++' 카테고리의 다른 글
[C언어] 파일관련(2) 파일 크기 구하기 fseek(), ftell(), feof() (0) | 2020.09.30 |
---|---|
[C언어] 파일관련(1) fopen(), frpintf(), fclose(), fscanf() (0) | 2020.09.17 |
[C언어] 함수에서 가변인자 사용하기 (0) | 2020.08.30 |
[C언어] 파일 입출력, 복사 등등.. (0) | 2020.08.30 |
[C언어] 열거형 enum (0) | 2020.08.13 |