پوینتر
معرفی
이 문서는 Wave 언어에서 제공하는 포인터 기능과 그 활용 방식에 대해 설명합니다. Wave는 저수준 시스템 프로그래밍을 지원하는 언어로서, 명시적인 메모리 주소 조작이 필요한 상황을 고려하여 포인터 기능을 제공합니다.
포인터는 특정 타입의 메모리 주소를 가리키는 변수이며, 이를 통해 메모리에 저장된 값에 직접 접근하거나 해당 값을 수정할 수 있습니다. 이 기능은 시스템 소프트웨어, 네이티브 라이브러리, 성능이 중요한 코드, 하드웨어 제어와 같은 영역에서 핵심적인 역할을 합니다.
اعلان پوینتر
Wave에서 포인터는 ptr<타입> 형태로 선언합니다.
이는 해당 타입의 값을 저장하고 있는 메모리 주소를 가리키는 포인터임을 명확하게 표현합니다.
예를 들어, i32 타입의 값을 가리키는 포인터는 다음과 같이 선언할 수 있습니다.
var p: ptr<i32>;
이 선언은 아직 어떤 메모리도 가리키지 않는 포인터 변수를 생성하며, 이후에 실제 주소로 초기화할 수 있습니다.
شروع به کار پوینتر
포인터는 변수의 주소를 참조함으로써 초기화할 수 있습니다.
Wave에서는 주소 연산자 &를 사용하여 변수의 메모리 주소를 얻습니다.
var a: i32 = 10;
var p: ptr<i32> = &a;
위 코드에서 &a는 변수 a가 저장된 메모리 주소를 의미하며,
포인터 p는 해당 주소를 가리키게 됩니다.
이 시점부터 p를 통해 a의 값에 직접 접근할 수 있습니다.
بازخوانی پوینتر
포인터가 가리키는 실제 값을 읽거나 수정하려면 역참조가 필요합니다.
Wave에서는 deref 키워드를 사용하여 포인터를 역참조합니다.
var a: i32 = 10;
var p: ptr<i32> = &a;
println("{}", deref p); // چاپ 10
deref p = 20;
println("{}", a); // چاپ 20
이 예제에서 deref p는 포인터 p가 가리키는 메모리 위치의 값을 의미합니다.
값을 읽을 수도 있고, 새로운 값을 대입하여 원본 변수의 내용을 변경할 수도 있습니다.