<case 1-1 : swap 안 되는 경우 == 실제 값 영향 X>

1. *a는 int형 정수 "aa = 1"을 참조, *b는 int형 정수 "bb = 2"를 참조
2. (&aa, &bb)로 주소를 매개변수로 전달 (1, 2의 주소 값)
3. 주소 값을 swap했지만 main에서 swap이 이루어지지 않음
-> 주소로 전달하고 주소 swap을 했지만, 복사된 인자들이 참조하는 주소를 swap해서 실제로 swap이 이루어지지 않음
<case 1-2 : swap이 이루어진 경우 == 실제 값 영향 O>

<case 2 : swap이 이루어 진 경우 == 실제 값 영향 O>

1. 문자열을 가리키는 *a, *b
2. 참조하는 문자열의 주소가 아닌, a, b의 주소를 매개변수로 전달
3. 복사된 새로운 *a, *b는 main에서의 a, b 주소가 가리키는 문자열 swap
4. 함수 종료 후 main 함수에서는 a, b가 가리키는 문자열이 swap 됨
<결론>
전달되는 매개변수는 값을 복사해서 쓰이기 때문에 새로운 변수임을 잊지 말아야 함! (이름은 같을 수 있음)
주소 값을 매개변수로 보내도 실제 참조하는 값에 어떻게 접근해서 수정이 일어나는 지에 따라 실제 값에 영향이 갈 수도, 가지 않을 수도 있다.
포인터는 더 주의해서 사용하자 ㅎㅎ
'etc > algorithm' 카테고리의 다른 글
[C언어] 포인터 문자열 VS 배열 문자열 (같지 않다!) (0) | 2021.02.25 |
---|---|
[C#] 입출력과 데이터 (0) | 2020.10.07 |
[C++] 다양한 별 찍기 문제 연습 (0) | 2020.07.26 |
[C++] c++ 시작하기 : cout, cin, namespace, 오버로딩 (0) | 2020.05.18 |
[Python] 5장 재귀와 반복 : 정렬 (Sorting) (0) | 2020.05.08 |