c언어 배열 질문입니다.
스위트초코
평균을 구하는 함수인데요. 어디가 잘못 되었는 지 봐주세요.
부탁드립니다.
#include stdio.h
int cal_average(int grade[]);
int main(void)
{
int grade[]={10, 20, 30};
int average=0;
average = cal_average(grade);
printf(%d\n, average);
return 0;
}
int cal_average(int grade[])
{
int total=0, aver=0;
total += (*grade);
aver = total / 3;
return aver;
}
-
벼리
예 모두들 감사드립니다.^-^
-
옆집오빠야
main에서는 이렇게 부르면 되겠네요
average = cal_average(grade,sizeof(grade)/sizeof(*grade)); -
환찬
이런 식이 좀더 안정적인 code가 됩니다.
int cal_average(int *pGrade, int nSize)
{
int total = 0,i=0;
if((pGrade == NULL) || (nSize == 0)) return 0;
for(i = 0; i nSize ; i ++)
{
total += *(pGrade + i);
}
return total/nSize;
} -
새론
음.. cal_average의 인자인 int grade[]는 아주 위험합니다. 만일 grade가 항상 3개의 값만을 가진다고 해서 cal_average에 grade[0],grade[1],grade[2]의 값을 더하는 거을 했는데.. main이 조금 수정되어서 grade가 2개의 값만 바뀌게 되면.. cal_average에서는 Aceess Denied가 발생하거나.. 혹은 쓰레기 값을 받게 되죠..
지금은 아주 짧은 program이라 별수롭지 않게 co -
해사랑해
total += (*grade);
를
total = grade[0] + grade[1] + grade[2]; -
허우룩
*(grade), *(grade + 1), ...