C언어 - 복합리터럴과 배열 ( Compound Literals )
2020. 11. 12. 16:10ㆍ개인공부/C언어
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define ROWS 3
#define COLS 4
int sum_1d(int arr[], int n);
int sum_2d(int arr[][COLS], int rows);
int main() {
int a = 1; // 1리터럴의 값을 a에 넣는것
3; // Literal 은 기호 없는 상수.
3.14f;
int b[2] = { 3,4 }; // 3,4두개의 숫자가 brace로 묶여있고
// b라는 심볼로 인식할수있는 2개짜리 배열에 들어간것.
(int[2]) {3, 4}; // 기호가 없다, compound literal
//int c[2] = (int[2]){3,4}; // Error
int arr1[2] = { 1,2 };
int arr2[2][COLS] = { {1,2,3,4},{5,6,7,8} };
printf("%d\n", sum_1d(arr1, 2)); // 배열을 함수에 전달할수 있음
printf("%d\n", sum_2d(arr2, 2));
printf("\n");
printf("%d\n", sum_1d(
(int[2]) { 1, 2 },
2)
);
printf("%d\n", sum_2d(
(int[2][COLS]) { {1, 2, 3, 4}, { 5,6,7,8 } }
,2)); //배열을 리터럴 처럼 바로 넣음
printf("\n");
int* ptr1;
int(*ptr2)[COLS];
ptr1 = (int[2]){ 1,2 };
ptr2 = (int[2][COLS]){ {1, 2, 3, 4}, { 5,6,7,8 } };
printf("%d\n", sum_1d(ptr1, 2)); // 배열을 함수에 전달할수 있음
printf("%d\n", sum_2d(ptr2, 2));
printf("\n");
return 0;
}
int sum_1d(int arr[], int n) {
int total = 0;
for (int i = 0; i < n; ++i)
total += arr[i];
return total;
}
int sum_2d(int arr[][COLS], int rows){
int total = 0;
for (int r = 0; r < rows; r++)
for(int c = 0; c< COLS; c++)
total += arr[r][c];
return total;
}
출처 : 홍정모의 따라배우는 C언어
'개인공부 > C언어' 카테고리의 다른 글
C언어 - 메모리 레이아웃과 문자열 (Memory Layout ) (0) | 2020.11.12 |
---|---|
C언어 - 문자열을 정의 하는 방법 (0) | 2020.11.12 |
C언어 - 포인터의 호환성(Compatibility) (0) | 2020.11.12 |
C언어 - 2차원 배열과 포인터 (0) | 2020.11.12 |
C언어 - 포인터의 배열과 2차원 배열 (0) | 2020.11.12 |