BackEnd/포인터 / / 2015. 6. 29. 21:07

[포인터 관련 데이터 타입] intptr_t와 uintptr_t

반응형

포인터 관련 데이터 타입

  • ptrdiff_t : 포인터 연산을 처리하기 위해 사용 << 클릭

intptr_t와 uintptr_t 사용

intptr_t와 uintptr_t 타입은 포인터의 주소를 저장하는 데 사용된다.

이 두 타입은 다른 환경으로 이식이 가능하고 안전한 포인터 선언 방법을 제공한다.

시스템 내부에서 사용하는 포인터와 같은 크기다.

포인터를 정수 표현으로 변환할 때 유용하게 사용할 수 있다.

uintptr_t 타입은 inptr_t 타입의 부호 없는 버전에 해당한다.

대부부느이 연산에서 inptr_t 타입을 사용하는 것이 좋으며, uinptr_t 타입은 intptr_t 타입만큼 유연하지 않고 사용이 제한적이다.

intptr_t 타입의 사용 방법

1
2
3
int num;
intptr_t *pi = &num;
 
cs

다음 코드처럼 정수 변수의 주소를 uintptr_t 타입의 포인터에 할당하면 문법 오류가 발생한다. 

1
2
uintptr_t *pu = &num;
 
cs

그래서 타입을 캐스팅하여 정상 할당해야 한다.

1
2
3
intptr_t *pi = &num;
uintptr_t *pu = (uintptr_t)&num;
 
cs

이러한 타입은 이식성과 안정성 이슈가 있는 겨웅에만 사용해야 한다.


참고문헌 : C 포인터의 이해와 활용. 리처드 리스 저

반응형

'BackEnd > 포인터' 카테고리의 다른 글

void 포인터  (0) 2015.06.29
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유