저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
포인터 사용하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
함수에서 포인터형 매개변수 사용하기
지금까지 함수의 매개변수에 값을 넘겨줄 때 일반 자료형을 사용했습니다. 다음은 함수에 정수형 값을 넘기고, 함수 안에서는 매개변수에 다른 값을 대입합니다.
func hello(n int) {
n = 2 // 매개변수 n에 2를 대입
}
func main() {
var n int = 1
hello(n) // 1이 들어있는 변수 n을 hello 함수에 넘김
fmt.Println(n) // 1: hello 함수안의 n에 2를 대입했지만 바깥의 n은 영향이 없음
}
실행 결과
1
매개 변수에서 일반 자료형을 사용하면 값이 복사되므로 함수 안에서 값을 변경해도 함수 바깥의 변수는 영향이 없습니다.
이번에는 포인터형 매개변수를 사용해보겠습니다.
func hello(n *int) {
*n = 2 // 포인터 변수 n를 역참조하여 메모리에 2를 대입
}
func main() {
var n int = 1
hello(&n) // 1이 들어있는 변수 n의 메모리 주소를 hello 함수에 넘김
fmt.Println(n) // 2: hello 함수에서 n의 메모리 공간에 2를 대입했으므로 바깥에 있는 n의 값이 바뀌었음
}
실행 결과
2
hello 함수에서 포인터형 매개변수를 받은 뒤 *
를 사용하여 값을 2로 변경하였습니다. 이렇게 하면 함수 바깥의 n의 값도 2가 됩니다. 즉, 메모리 주소를 넘겨주었으므로 기존 변수의 값이 바뀌게 됩니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.