Language/C, C++
[C] 함수 인자로 배열 전달
Phulasso
2020. 12. 20. 09:53
배열을 통째로 함수의 인자로 전달하는 것은 불가능하다. 그러나 배열을 함수의 인자로 전달하면 배열 시작점의 주소값이 전달 되기 때문에 함수의 매개변수를 포인터 변수로 선언하면 포인터 변수를 이용하여 배열에 접근할 수 있다.
#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)