함수 문제 질문~!
든솔
2023.04.01
질문 내용 :
#include stdio.h
void p(int *x, int *y);
void main()
{
int x=7, y=9;printf(a:initial value x= %d, y=%d\n, x,y);
printf(b: address &x = %p, &y = %p\n,&x,&y);
p(&x,&y);
printf(g: after call x = %d , y= %d\n, x,y);
}
void p(int *px, int *py)
{
int temp;
printf(c:px=%p, py=%p\n, px,py); q1) 여기서 변수px가 가르키는 주소가정해져있지않은데 어떻게
px의 값이 나오는지 이해가되지않아요.
printf(d:*px=%d, *py=%d\n,*px,*py);q2) 마찬가지로 변수px가 가르키는값이 없는데 어떻게 *px 값
을출력하는게 가능한지 궁금해요.
temp=*px;
*px=*py;
*py=temp;
printf(e:px=%p, py=%p\n, px,py);
printf(f:*px = %d, *py = %d\n,*px,*py);}
-
자올
main에서 넘긴 매개변수의 이름이 x와 y일지라도 p라는 함수에서는 px와 py로 인식하게 됩니다. 넘긴 인자 또한 변수 x와 y의 주소를 넘겨주었으므로 px에는 x의 주소값이 py에는 y의 주소값이 있다고 생각하시면 되겠습니다.