⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 널리 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
이전 오토핫키 버전과는 많은 부분에서 호환이 되지 않으니,
만약 현시점에서 대중적인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시길 바랍니다.
54. 참조와 역참조
이번 강은 지루한 이론입니다. 그러나 더욱 진화된 함수를 만들기 위해 꼭 필요한 내용이니 반드시 이해해주시길 바랍니다.
변수와 주소
변수의 값은 컴퓨터 어딘가에 저장되어있을 것입니다. 그러니까 우리가 원할 때 자유롭게 변수를 사용할 수 있는 것이지요. 여기까진 유추 가능한 사실입니다.
변수를 포함하여 프로그램 실행 중 생긴 모든 '기억할 것'은 컴퓨터의 '주기억장치'에 저장됩니다. 흔히 RAM 혹은 메모리라고 부릅니다. 변수의 값은 메모리 어딘가에 저장되어 있기 때문에, 우리가 변수를 사용하면 그 메모리에 저장된 내용을 읽습니다.
이제 주소에 관한 이야기를 드려야겠네요. 메모리에 저장된 변수는 각자 '주소'를 가지고 있습니다. 말 그대로 아주 넓은 메모리 공간에서 값이 어디에 저장되어있는지 정확히 알 수 있는 주소 말입니다. 일단은 이렇게만 알고 넘어가도록 합시다.
참조
어떤 변수 var
가 값을 갖고 있으며 메모리 어딘가에 저장되어있다고 합시다.
그런데, 그 변수를 가리키는 또다른 변수 ref
를 만들 수 있으며,
이를 "변수 ref가 변수 var를 참조한다"라고 말합니다.
결국 var
와 ref
는 본질적으로 같은 변수입니다.
ref
는 var
의 별칭인 셈이죠.

변수는 참조 연산자(&
)를 통해 참조할 수 있습니다.
1 var := 2
2 ref := &var
&var
와 같이 변수 앞에 참조 연산자를 붙이면 참조 형식(VarRef)이 만들어집니다.
당연히 &var
를 대입한 ref
는 참조 형식입니다.
그러므로, 위의 코드에서 ref
는 var
를 참조합니다.
이로써 var
를 참조하는 변수인 ref
를 만들었습니다.
차이가 있다면 var
는 숫자가 담긴 일반적인 변수지만, ref
는 var
를 참조하는 참조 형식의 변수라는 점입니다.
역참조
참조 형식의 변수는 값을 직접 가진 것이 아니라, 다른 변수의 위치를 참조하고 있을 뿐입니다. 따라서 참조하고 있는 변수를 직접 사용할 수 없습니다. 참조하고 있는 변수에 접근하려면 '역참조'라는 과정이 필요합니다.
참조 형식의 변수는 역참조 연산자(%
)를 통해 역참조할 수 있습니다.
이 연산자는 역참조할 변수를 감싸는 형태로 사용합니다.
1 var := 2
2 ref := &var
3 MsgBox(%ref%)
위 코드는 var
를 참조하고 있는 ref
를 역참조합니다.
결국, %ref%
는 var
와 완전히 동일합니다.
당연히 아래와 같이 대입도 가능합니다.
1 var := 2
2 ref := &var
3 %ref% := 50
Tip: 참조를 말하는 여러 어휘
'참조 형식'을 단순히 '참조'라고도 부릅니다.
따라서, "변수 ref
는 참조이다" 역시 맞는 어휘입니다.
응용하여 "ref
는 var
에 대한 참조이다" 는 ref
가 var
를 참조한다는 뜻이죠.
사실 이 편이 더욱 잘 쓰이는 용어입니다.
도대체 참조를 왜 쓸까요? 그 이유는 함수의 매개변수 전달에 참조 형식을 이용하는 경우가 있기 때문입니다. 다음 강에서 그 방법과 효과를 배우겠습니다.