Golang 포인터 주소에 대한 학습 노트

3396 단어 Go
주소는 변수가 배치된 위치를 나타냅니다.
var n int = 100

fmt.Println(n)  // 100
fmt.Println(&n) // 0xc0000167b0
& Anpasand라고 하는데 변수가 메모리에 저장된 주소를 알 수 있습니다
컴퓨터는 변수를 다음과 같은 이미지로 저장합니다.

각 메모리 영역에는 주소(16진수)가 할당됩니다.
따라서 주소와 값은 연관된 상태입니다.
Anpasand&를 사용하면'그 변수가 메모리에 있는 곳'을 알 수 있다.
포인터는 주소를 저장하는 대상이다
var n int = 100
var p *int = &n
fmt.Println(p) //0xc00007c770
참조C 언어 포인터 문법의 요점, 손인이지만 이런 기록이 있다.
포인터는 객체가 논리적 위치 정보로 액세스할 수 있을 때 참조할 수 있는 객체입니다.유명한 예로 C/C++의 메모리 주소를 표시하는 바늘을 들 수 있습니다.(ja.wikipedia.org)
In computer science, a pointer is a programming language object, whose value refers to (or "points to") another value stored elsewhere in the computer memory using its address.(en.wikipedia.org)
따라서 바늘을 주소로 삼아도 상관없다.(엄밀히 말하면 다르다...)
상기 코드var p *int = &n 부분에서 변수 p는 int의 바늘 형식을 설명하고 변수 n의 주소를 저장합니다.
이때p를 포인터라고 할 수 있습니다.*int는 int용 주소를 저장하는'바늘형'이다.&*를 이용하면 알 수 있습니다.
var n int = 100

fmt.Println(n)  // 100
fmt.Println(&n) // 0xc0000167b0
fmt.Println(*&n) // 100
fmt.Println(&*&n) // 0xc0000167b0
번거롭지만 변수 앞에 *를 놓으면 주소의 실체를 참조할 수 있다.

좋은 웹페이지 즐겨찾기