배열을 통째로 함수의 인자로 전달하는 것은 불가능하다. 그러나 배열을 함수의 인자로 전달하면 배열 시작점의 주소값이 전달 되기 때문에 함수의 매개변수를 포인터 변수로 선언하면 포인터 변수를 이용하여 배열에 접근할 수 있다.
#include <stdio.h>
void ShowArrayElem(int * param, int len)
{
for(int i = 0; i<len; i++){
printf("%d ", param[i]);
}
printf("\n");
}
int main(void)
{
int arr1[] = {1,2,3};
int arr2[] = {4,5,6,7,8};
ShowArrayElem(arr1, sizeof(arr1)/4);
ShowArrayElem(arr2, sizeof(arr2)/4);
return 0;
}
/* output :
1 2 3
4 5 6 7 8
*/
#include <stdio.h>
void ShowArrayElem(int * param, int len)
{
for(int i = 0; i<len; i++){
printf("%d ", param[i]);
}
printf("\n");
}
void AddArrayElem(int * param, int len, int add)
{
for(int i = 0; i < len; i++)
{
param[i] += add;
}
}
int main(void)
{
int arr[3] = {1,2,3};
AddArrayElem(arr, sizeof(arr)/4, 1);
ShowArrayElem(arr, sizeof(arr)/4);
AddArrayElem(arr, sizeof(arr)/4, 2);
ShowArrayElem(arr, sizeof(arr)/4);
return 0;
}
/* output :
2 3 4
4 5 6
*/
위 코드와 같이 주소 값만 알면 배열에 저장된 값의 변경도 가능하다.
배열을 함수의 인자로 전달받을 때는 다음과 같은 선언도 가능하다. int * param과 동일한 의미이다.
void ShowArrayElem(int param[], int len)
'Language > C, C++' 카테고리의 다른 글
[C] 포인터에서 const 사용 (0) | 2020.12.20 |
---|---|
[C] Call - by - value, Call - by - reference (0) | 2020.12.20 |
[C] 포인터 배열 (0) | 2020.12.19 |
[C] 문자열 포인터 (0) | 2020.12.18 |
[C] 포인터 연산 (0) | 2020.12.17 |