@ptrCast — 포인터 타입을 다른 타입으로 바꾸기

@ptrCast — 포인터 타입을 다른 타입으로 바꾸기

Zig에서 포인터를 다른 타입의 포인터로 바꿀 때 쓰는 내장 함수가 바로 @ptrCast예요. 타입 변환의 결과 타입은 문맥에서 추론돼요.

출처: Zig Documentation

본문

@ptrCast(value: anytype) anytype

@ptrCast는 한 타입의 포인터를 다른 타입의 포인터로 변환해 줘요. 반환 타입은 문맥에서 추론된 결과 타입이에요.

Optional Pointers도 허용돼요. null인 optional 포인터를 non-optional 포인터로 캐스팅하면 안전 검사가 적용된 Illegal Behavior가 발생해요.

@ptrCast는 다음 경우에는 쓸 수 없어요:

  • const 한정자를 제거할 때 — 이때는 @constCast를 써요.
  • volatile 한정자를 제거할 때 — 이때는 @volatileCast를 써요.
  • 포인터의 주소 공간(address space)을 바꿀 때 — 이때는 @addrSpaceCast를 써요.
  • 포인터의 정렬(alignment)을 강화할 때 — 이때는 @alignCast를 써요.
  • slice가 아닌 포인터를 slice로 캐스팅할 때 — 이때는 slicing 문법 ptr[start..end]를 써요.

더 알아보기 (Learn more)