:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
11/09/19 16:34
아직 포인터와 배열의 사용법, 함수호출 등에 대해 기초가 좀 부실하신 것 같습니다.
사실 C 문법자체가 포인터와 배열을 사용함에 있어 굉장히 모호합니다. ^^ 100% 이해가 되실 때 까지 열심히 하세요. 꼭(!!) 입니다. 몇가지 오류점을 설명드리자면 1. Main함수에서 Max와 Min을 포인터로 선언할 필요가 없습니다. 포인터로 선언하였다면 유효한(!!) 주소를 참조하여야 하는데 님이 작성하신 코드에는 그렇게 되어있지 않습니다. 아니면 동적할당을 통해서라도 유효한 주소를 참조받아야 합니다만... (동적할당은 아직 배우시지 않은 듯 하여 PASS할게요) 2. MaxMin의 함수원형 또한 잘못되었습니다. Call by Address(또는 Reference)와 Call by Value의 개념을 재숙지 하셔야할 것 같습니다. //////////////////////////////////////////////////////////////// 님께서 작성하신 코드를 최소한으로 변경하여 보았습니다. 참고하시기 바랍니다. #include <stdio.h> void MaxMin(int *Max, int *Min, int *arr, int size) // MaxMin 함수 선언 int i; // 일단 Max와 Min값을 배열의 첫번째 값으로 초기화 *Max = arr[0]; *Min = arr[0]; // 배열의 첫번째(i = 0) 요소는 비교할 필요 없음. for(i = 1; i < size; i++) { if(*Max < arr[i]) *Max = arr[i]; else if(*Min > arr[i]) *Min = arr[i]; } int main(void) int i; int arr[5]; // int *max, *min; int max, min; for(i=0;i<5;i++) // 정수 입력단계 { printf("정수를 입력하시오 : "); scanf("%d", &arr[i]); // max=arr; // min=arr; // 변수의 주소값을 넘겨서 호출해야함. MaxMin(&max, &min, arr, sizeof(arr)/sizeof(int)); printf("최댓값 : %d \n", max); printf("최솟값 : %d \n", min); return 0; }
|