-
SwapPointer(포인터가 가리키는 대상이 서로 바뀌도록 하는 함수) 윤성우의 열혈 C++ 문제 2-1-3PROGRAMMING/C++ 2023. 12. 26. 08:16
문제3) SwapPointer를 통해 ptr1과 ptr2가 가리키는 대상이 서로 바꾸도록 SwapPointer를 정의해보자.
int main() { int num1 = 5; int* ptr1 = &num1; int num2 = 10; int* ptr2 = &num2; }
정답)
void SwapPointer(int* (&pref1), int* (&pref2)) { int* ptr = pref1; pref1 = pref2; pref2 = ptr; }
Key Idea⭐pointer의 참조자 사용
포인터의 주소값 자체는 변하지 않는다.
cout << "&ptr1 : " << &ptr1 << " " << "&ptr2 : " << &ptr2 << endl; SwapPointer(ptr1, ptr2); cout << "&ptr1 : " << &ptr1 << " " << "&ptr2 : " << &ptr2 << endl;
void SwapPointer(int* (&pref1), int* (&pref2)) { int* ptr = pref1; cout << "&ptr : " << &ptr << " " << "&pref1 : " << &pref1 << " " << "&pref2 : " << &pref2 << endl; pref1 = pref2; pref2 = ptr; }
ptr1의 참조자인 pref1은 주소가 서로 같고, ptr2의 참조자인 pref2 역시 주소가 서로 같다.
'PROGRAMMING > C++' 카테고리의 다른 글
윤성우 열혈 C++ 프로그래밍 5장) 복사생성자(explicit, 임시객체) (2) 2024.01.02 윤성우 열혈 C++ 프로그래밍 4장) 클래스의 기본(정보은닉, const함수, 이니셜라이져, 생성자, 소멸자, this포인터, self-reference) (2) 2023.12.28 윤성우 열혈 C++ 프로그래밍 3장) 클래스의 기본(struct와 class, private와 public, 파일분할, 객체지향 프로그래밍) (1) 2023.12.22 윤성우 열혈 C++ 프로그래밍 2장) C언어 기반의 C++ 2(bool형 자료형, 참조자, const, new&delete) (2) 2023.12.20 윤성우 열혈 C ppt 정리본(chapter 17 ~ chapter 30) (2) 2023.12.19