Open cjaewon opened 3 years ago
type EXAMPLE struct { a int } example := &EXAMPLE{} example2 := &EXAMPLE{} fmt.Println(&example, &example2) example = example2 fmt.Println(&example, &example2)
위 결과는 다음과 같다.
0xc0000ae018 0xc0000ae020 0xc0000ae018 0xc0000ae020
example = example2 를 했기 때문에 포인터 주소가 같아야 된다고 생각했다. example.a 와 example2.a 의 값을 확인해보니 같은 걸 인지하였고 내가 포인터의 포인터 주소를 출력하고 있다는 것을 알게됬다.
처음에는 밑에 처럼 생각했다.
하지만 알고보니 더블포인터의 주소를 가져오고 있었던 것이다. 포인터의 포인터 주소는 어차피 다른 메모리 공간에 저장되므로 같을 수가 없다.
fmt.Printf("%p %p", example, example2) // 포인터가 같다.
위 결과는 다음과 같다.
example = example2 를 했기 때문에 포인터 주소가 같아야 된다고 생각했다. example.a 와 example2.a 의 값을 확인해보니 같은 걸 인지하였고 내가 포인터의 포인터 주소를 출력하고 있다는 것을 알게됬다.
처음에는 밑에 처럼 생각했다.
하지만 알고보니 더블포인터의 주소를 가져오고 있었던 것이다. 포인터의 포인터 주소는 어차피 다른 메모리 공간에 저장되므로 같을 수가 없다.