https://www.youtube.com/watch?v=7Ne4rJteUwY&list=PLrj92cHmwIMeGEv1EgvJdIJwQAFzHV3k1&index=2
int a = 3;에서 a는 값 3을 메모리에 저장.int *p = &a;에서 p는 변수 a의 주소를 저장.a와 b의 값은 변경되지 않음.void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
}swap(&a, &b);로 주소를 전달하면, a와 b의 값이 실제로 교환됨.void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}#include <stdio.h>void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a = 3, b = 5;
printf("Before swap: a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("After swap: a = %d, b = %d\n", a, b);
return 0;
}
Before swap: a = 3, b = 5
After swap: a = 5, b = 3따라서, *p1 = *p2;는 두 포인터가 가리키는 메모리 값을 복사하는 것이지, 포인터 변수 자체의 주소를 변경하는 것이 아닙니다.