[해결]포인터 예제 질문입니다. ^^;
맑다
이와 같은 예제를 공부중입니다.한줄 한줄 해석하는데 안되는 부분이 생겨 질문 드립니다.===================================================#include turboc.h
int swap(int *a, int *b); // 함수 원형 선언
void main(void)
{
int x, y;
x = 5, y = 10;
printf(%d, %d\n, x, y); // 그냥5, 10이렇게 단순하게 출력 되지요.
swap(&x, &y); // x와 y 값을 바꾸는 함수입니다. 아래 함수로 이동하겠지요?
printf(%d, %d\n, x, y); // 그리곤 바뀐 값을 출력하는 것이지요.. 10, 5 이렇게..
}
int swap(int *a, int *b) // 포인터 변수를 인수로 사용하고자 선언합니다.
{
int temp; // 임의의 변수를 설정하여
temp = *a; //포인터 변수 a가 가리키는 주소, 즉 &x(x의 번지 값)을 temp에치환하고, // *a가 가리키는 주소의 내용(5)를 temp로 이동.
*a = *b; // b가 가리키는 주소, 즉 &y(y의 번지 값)을포인터 변수 a에 치환하고,// *b가 가리키는 주소의 내용(10)을 *a가 가리키는 주소의 내용에치환!!
*b = temp;// temp에 저장된번지값을포인터 변수 b에 치환한다. // temp에 저장된 값 5를, *b가 가리키는 주소의 내용에 치환!!// 이렇게 해서 결국 포인터 변수 a와 b에저장된 인수가 바뀌게 되었죠.
printf(%d, %d\n, *a, *b);// 이렇게 출력하면 바뀐 값 10,5 가 출력됩니다. - 이건 이해가 갑니다.
return 0;
}여기서 이해가 안 되는게 주석문 중 첫번 째 빨간 글씨입니다.swap함수로 포인터변수에 저장된 주소값이 바뀌었을 뿐, 변수 x와 y의 주소값이나 내용이 바뀐건 아닌데어떻게 바뀐 결과가 출력되는 것이졍?것이지요?참 헷갈립니다.
-
비
천재인걸....
-
미투리
혼자 해결 했네요. 질문 내용을 정리하다 보니 풀리네요.. 지울까도 생각했지만 혹시 저처럼 헤매는 분을 위해 남겨둡니다.
보라색 주석글이 제대로 해석한 부분이죠...