함수에서 배열을 인수로 사용하기
함수 헤더에서 배열 매개변수 선언
함수 헤더에서 배열 매개변수를 선언할 때에는 자료형 배열명[]의 형태로 선언헌다.
1
2
3
| int func_1d(int arr[]);
int func_2d(int arr[][3]);
int func_char(char str[]);
|
차원에 따른 배열 매개변수 선언
- 배열을 매개변수로 사용할 때는, 배열의 규격(크기)를 알 수 있도록 해야한다.
- 단, 가장 바깥의 차원의 크기는 지정하지 않아도 된다.
- 이는 첫 번째 차원은 어차피 포인터로 decay 되기 때문에 차원의 크기를 지정하는게 의미가 없기 때문이다.
- 쉽게 말해 첫 번째 차원은 포인터가 되어버리기 때문에 크기 자체가 필요하지 않다. 따라서 생략이 가능
1
2
3
4
5
6
7
8
| // 1차원 함수 헤더
int func_1d(int arr[], int n);
// 2차원 함수 헤더
int func_2d(int arr[][3], int n);
// 3차원 함수 헤더
int func_3d(int arr[][3][4], int n);
|
decay : 포인터로 변환
예시
1
2
3
4
5
6
7
8
| int a[] = {1, 2, 3, 4};
void func_1d(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
func_1d(a, 4);
|
1
2
3
4
5
6
7
8
9
10
| int b[2][3] = {1, 2, 4, 5, 6};
void func_2d(int arr[][3], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
func_2d(b, 2);
|
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
Comments