728x90
✅오늘의 문제 : 최대값 구하기
이중 포인터와 크기가 5인 배열을 선언하고, 함수를 사용해서 입력된 수 중 최대값을 출력해보세요.
- 함수는 void형입니다.
- 최대값을 저장하는 이중 포인터 변수는 main함수에 초기화해야합니다.
(코뮤니티 모각코 과정 中 출제된 문제입니다.)
[초안]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void maxnum(int *max, int numarr[]); //함수 선언(최대값 구하는 함수)
int main() {
int numarr[5]; //배열 선언
int j; //최댓값을 받을 변수
for (int i = 0; i < 5; i++) { //5개 수 입력 받기
scanf("%d", &numarr[i]);
}
maxnum(&j, numarr); //함수 호출
printf("\n\n최대값 : %d", j);
return 0;
}
void maxnum(int *max, int numarr[]) { //함수 정의
int** Max = &max; //이중포인터 변수로 포인터 변수의 주소값 저장
**Max = *numarr; //이중포인터 초기화
for (int i = 0; i < 5; i++) {
if(**Max < numarr[i]) {
**Max = numarr[i];
}
}
}
기능적으로는 완벽히 동작하는 코드였다.
하지만...
문제에서 최대값을 저장하는 이중포인터 변수를 main 함수에 초기화 하라는 말을 못보고 작성한 코드라
틀렸음ㅠㅠ!!
그리고...변수명은 소문자가 원칙이다...
다시 풀었다...
// 이중 포인터와 크기가 5인 배열을 선언하고, 함수를 사용해서 입력된 수 중 최대값을 출력해보세요.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void maxnum(int **pptr, int numarr[]); //함수 선언(최대값 구하는 함수)
int main() {
int numarr[5]; //배열 선언
int max = 0; //최댓값을 받을 변수
int* ptr = &max; // ptr = > max의 메모리 주소
int** pptr = &ptr; // pptr = > ptr의 메모리 주소
for (int i = 0; i < 5; i++) { //5개 수 입력 받기
scanf("%d", &numarr[i]);
}
maxnum(pptr, numarr); //함수 호출
printf("\n최대값 : %d\n", max);
return 0;
}
void maxnum(int **pptr, int numarr[]) { //함수 정의
for (int i = 0; i < 5; i++) {
if(**pptr < numarr[i]) { //numarr[i]값이 max값보다 크면
**pptr = numarr[i]; // max = numarr[i]
}
}
}
원래 maxnum 함수에서 선언 및 초기화해줬던 Max(이중포인터)를
main에서 pptr로 초기화해주고, maxnum 함수에서 pptr을 인자로 받아 사용하는 형태로 만들었다.
'ProgrammingLanguage > C언어' 카테고리의 다른 글
C언어 | 무한루프 예제 (0) | 2021.02.14 |
---|---|
C언어 | 함수 포인터 예제 (0) | 2021.02.14 |
C언어 | 2차원 배열 + 이중 포인터 예제 (2) | 2021.02.14 |
C언어 | 2차원 배열 예제 (0) | 2021.02.14 |
C언어 | 구조체 예제 (2) | 2021.02.14 |