<예제>
#include<stdio.h>
void showarray(int* param, int len)
{
int i;
for (i = 0; i < len; i++)
printf("%d", param[i]);
printf("\n");
}
void add(int* param, int len, int add)
{
int i;
for (i = 0; i < len; i++)
param[i] += add;
}
int main(void)
{
int arr[3] = { 1,2,3, };
add(arr, sizeof(arr) / sizeof(int), 1);
showarray(arr, sizeof(arr) / sizeof(int));
add(arr, sizeof(arr) / sizeof(int), 2);
showarray(arr, sizeof(arr) / sizeof(int));
add(arr, sizeof(arr) / sizeof(int), 3);
showarray(arr, sizeof(arr) / sizeof(int));
return 0;
}
<참고>
void showarray(int* param, int len) , void add(int* param, int len, int add) 이 두문장은 아래와 같이 바뀔 수 있다.
void showarray(int param [ ] , int len), void add(int param[ ] , int len, int add)와 같이 말이다.
즉, int * param 과 int param [ ]는 완전히 동일한 선언이다. 일반적으로 배열의 주소 값이 인자로 전달될 때에는
int param[ ] 형태의 선언을 주로 사용한다.
그렇지만, 이 둘이 같은 선언으로 인정되는 것은 매개변수의 선언으로 제한이 된다.
#include<stdio.h>
int main(void)
{
int arr[3] = {1,2,3};
int * ptr =arr;
..........
이 코드를 보면 int * ptr = arr;의 문장이 있는데, int ptr [ ] =arr;로 대체가 가능할까? 절대 불가능이다.
즉 둘을 같은 선언으로 보는것은 매개 변수의 선언으로만 제한이 된다는 것을 알아두어야 한다.