포인터에 대한 다른 질문입니다.
우주
#includestdio.h
void maxmin(int *a,int size, int **mx,int **mn)
{
int i;
int *min,*max;
max=min=a;
for(i=0;isize;i++)
{
if(a[i]*max)
max=&a[i];
if(a[i]*min)
min=&a[i];
}
*mx=max;
*mn=min;
}
int main(void)
{
int a[5];
int i;
int* max;
int* min;
printf(5개의 정수 입력 : );
for(i=0;i5;i++)
{
scanf(%d,&a[i]);
}
maxmin(a,sizeof(a)/sizeof(int),&max,&min);
printf(최대값 : %d\n최소값 : %d\n,*max,*min);정수 5개를 입력후 출력을 하면 최대값과 최소값을 나타내주는 프로그래밍인데요.
max=min=a; 이 max=a;와 min=a;으로 된다면 이것이 주소값을 넘기는 겁니까??
그리고 주소값을 넘긴다면 if문에서 a[i]*max 가 어떻게 비교될수 있습니까?서로 값이 똑같아서 비교가 되지 않을
것 같은데요...
-
큰뫼 2023-05-04
max는 처음에 &a[0] == &*a == a값을 가진 상태고..
a[i]라고 하면 i값이 변하면서 배열의 다른 값들과 비교하게 되는 거죠.. -
미드미 2023-05-04
*max == max[0] 이고 int형이구요~
a[i] == *(a+i) 로 역시 같은 int형이예요...
그러니 비교가 되는 거죠..