1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
    문제의 제시에 앞서 다음의 코드를 보자.
    int main()
    {
        int num1=5;
        int *ptr1=#1;
        int num2=10;
        int *ptr2=#2;
        .....
    }
    위의 코드를 보면 ptr1과 ptr2가 각각 num1,num2를 가리키고 있다. 이 때 ptr1과 ptr2를 대상으로 다음과 같은 함수를 호출하고 나면,
    SwapPointer(ptr1,ptr2);
    ptr1과 ptr2가 가리키는 대상이 서로 바뀌도록 SwapPointer 함수를 정의해보자.
*/
 
#include <iostream>
 
void SwapPointer(int **pptr1, int **pptr2)
{
    int *temp = *pptr1;
    *pptr1 = *pptr2;
    *pptr2 = temp;
}
 
void SwapPointer2(int *(&rptr1), int *(&rptr2))
{
    int *temp = rptr1;
    rptr1 = rptr2;
    rptr2 = temp;
}
 
void SwapPointer3(int *ptr1, int *ptr2)
{
    int *temp = ptr1;
    ptr1 = ptr2;
    ptr2 = temp;
}
 
int main()
{
    int num1 = 5;
    int *ptr1 = &num1;
    int num2 = 10;
    int *ptr2 = &num2;
 
    std::cout << "ptr1 value = " << ptr1 << std::endl;
    std::cout << "ptr2 value = " << ptr2 << std::endl;
 
    SwapPointer(&ptr1, &ptr2);
 
    std::cout << "SwapPointer(ptr1,ptr2);" << std::endl;
    std::cout << "ptr1 value = " << ptr1 << std::endl;
    std::cout << "ptr2 value = " << ptr2 << std::endl;
 
    SwapPointer2(ptr1, ptr2);
 
    std::cout << "SwapPointer2(ptr1,ptr2);" << std::endl;
    std::cout << "ptr1 value = " << ptr1 << std::endl;
    std::cout << "ptr2 value = " << ptr2 << std::endl;
 
    return 0;
}
cs

프린이 열혈 C++ 보면서 공부중인데
문제보고 처음엔 SwapPointer3 처럼 만들고 출력했는데 가리키는 주소값이 안바뀜
생각해보니까 함수내에서만 값이 바뀌는거임 Call by Value?
  
그래서 더블포인터 쓰면 되겠지? 하고 더블포인터로 함수만들어봄
근데 문제에서는  SwapPointer(ptr1, ptr2);  이렇게 호출하라고 제시해줌


이뭐병하면서 답을 봤는데
void SwapPointer2(int *(&rptr1), int *(&rptr2))
참조자형 포인터를 받게되있음
근데 int *(&rptr1) 이부분이 이해가안감

포인터 ptr1을 참조해야하면 int &(*rptr1) 이나 int &*rptr 이렇게 써야하는거아님?
하면서 생각하고 있었는데 글쓰다보니까

포인터에대한 개념자체가 잘못잡혀있는거같음
int *ptr1 이렇게 코딩을하다보니까 *ptr1을 그냥 변수명처럼 생각해서 저따구로생각한건가

그냥 int*을 하나의 자료형이라 생각하고
int* ptr1을 참조하는 int* &rptr1 선언해준다 생각하면 편한거같은데

왜 저렇게생각했지 개빡머갈이네 지금 이해한게 맞나 싶기도 하고

현탐조진다 공부왜하지