⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만,
새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.
54. 참조와 역참조
마지막 수정일: 2023-12-17
이번 강은 지루한 이론입니다. 그러나 더욱 진화된 함수를 만들기 위해 꼭 필요한 내용이니 반드시 이해해주시길 바랍니다.
변수와 주소
변수의 값은 컴퓨터 어딘가에 저장되어있을 것입니다. 그러니까 우리가 원할 때 자유롭게 변수를 사용할 수 있는 것이지요. 여기까진 유추 가능한 사실입니다.
변수를 포함하여 프로그램 실행 중 생긴 모든 '기억할 것'은 컴퓨터의 '주기억장치'에 저장됩니다. 흔히 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
를 참조한다는 뜻이죠.
사실 이 편이 더욱 잘 쓰이는 용어입니다.
도대체 참조를 왜 쓸까요? 그 이유는 함수의 매개변수 전달에 참조 형식을 이용하는 경우가 있기 때문입니다. 다음 강에서 그 방법과 효과를 배우겠습니다.