이해가 안되네여 ^^;;
서리서리
#include stdio.h
#include stdlib.h
#define p printf
#define s scanf
void MaxMin(int* parr, int size, int **mx, int **mn);
int main(int argc, char *argv[])
{
int arr[5];
int i, j;
int *max=0, *min=0;
p(정수 입력:\n);
for(i=0;i5;i++)
s(%d, &arr[i]);
MaxMin(arr, sizeof(arr)/sizeof(int), &max, &min);
p(젤큰정수는 : %d , 젤 작은 정수는 : %d\n, *max, *min);
system(PAUSE);
return 0;
}
void MaxMin(int* parr, int size, int **mx, int **mn)
{
int i;
int maX= parr[0];
int miN= parr[0];
for(i=0;i5;i++){
if(maXparr[i])
maX=parr[i];
else if(miNparr[i])
miN=parr[i];
}
p(\n%d %d\n, maX, miN);
*mx= &maX;
*mn= &miN;
}
안녕하세여^^ 오늘 하루 잘보내셨습니까???
위에 소스는 오늘 열혈강의를 보고 푼 예제 입니다..
제대로 출력이 되지만.. 궁굼한것이 있씁니다.....
mian함수부분
p(젤큰정수는 : %d , 젤 작은 정수는 : %d\n, *max, *min);
mian 함수 출력 부분에서 *max *min 포인트 변수로 출력을 하고 있씁니다
그런데 *max*min 변수가 가지고 잇는 값은 MaxMIn 함수 에서 선언된 값입니다....
리턴도 시키지 않고 **mx 랑 **mn이용하여
*mx= &maX;
*mn= &miN;
값을 넣었씁니다
그런데 여기서 중요!!!!!!!!
지역변수로 선언한 변수는 함수가 끝나면 살아지지 않습니까?
그럼 MaxMin함수가 끝날떄 miX miN 값도 살아지지 않나여???
그럼 출력도 당연히 되지 않아야 하는데. 혹시 제가 잘못 알고 잇나 싶어서 이렇게 올려봤씁니다 ^^
도와주세용~~ ㅎㅎ
-
예님
음.. 그렇쿤여.. 이건 그냥 쉽게 이해 하는기 좋겠군여;; ㅎ
수다님 답변 감사합니다 ^^ 매일 좋은 하루 되세요~ -
울트라
MaxMin 함수에서 선언한 지역 변수는 분명히 사라지는 것이 맞습니다.
그래서 maX, miN 변수는 사라집니다만
그래서 사라지기 전에
인수로 받은 mx와 mn에 넣어주는 것입니다.