double average(double arr1[], int n)
{
printf("size = %zd in function average\n", sizeof(arr1));
double avg = 0.0;
for(int i= 0; i<n; ++i)
{
avg += arr1[i];
}
avg /= (double)n;
return avg;
}
위와 같은 방법으로 파라미터를 넣어주어야 한다.
#잘못된 예시
double average(double arr1[5])
{
printf("size = %zd in function average\n", sizeof(arr1[5]));
double avg = 0.0;
for(int i= 0; i<5; ++i)
{
avg += arr1[5];
}
avg /= (double)5;
return avg;
}
틀렸다라기보다는 의미가 없는 함수가 되어버린다.(의도한대로 반환값을 얻는 경우의 수가 존재한다는 말임.)
출력해보면 알겠지만 arr1의 배열 전체가 들어가는 것이 아니라 arr1의 시작주소의 포인터값이 인자로 전달된다.
그래서 처음 예시처럼 arr의 시작주소의 포인터만을 넘거주는 것이 일반적이다.
그리고 배열의 크기를 'n'을 인자로 넘겨주어서 가변적요소에 대응한다.
'개발공부 > C' 카테고리의 다른 글
변수의 영역 (0) | 2019.10.17 |
---|---|
C언어를 가장 쉽고 직관적으로 이해하는 강의 (0) | 2019.10.17 |
printf()함수 (0) | 2019.10.15 |
기호적상수와 전처리기 (0) | 2019.10.15 |
sizeof 연산자 (0) | 2019.10.15 |