포인터 사용하기

이재홍 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 공유는 허용합니다.

Published

01 June 2015