안녕하세요 ! 초보개발자 입니다.
이 블로그는 개인 공부 정리용 블로그 입니다.
혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.
그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.
그럼 시작하도록 하겠습니다.
void 포인터
void포인터는 가리키는 대상이 없는 포인터 입니다. 다음과 같이 void포인터를 선언 합니다.
void* ptr;
타입이 void 형이지만 여기서 void의 의미는 타입이 없다는 뜻이 아니라 타입이 정해져 있지 않음을 뜻할 뿐입니다. 그렇기 때문에 void포인터에는 어떤 종류의 포인터값도 형변환 없이 대입이 가능 합니다.예를 들면 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<stdio.h> int main(void) { int intP = 1; double doubleP = 3.0; void* voidP1 = &intP; void* voidP2 = &doubleP; return 0; } | cs |
void 포인터는 주소를 저장할 수 있지만 타입이 존재 하지 않기 때문에 포인터를 연산하는 것은 불가능 합니다. 그렇기 때문에 연산을 하기 위해서는 아래와 같이 적절하게 형변환을 해주어야 합니다.
printf("%d\n", *(int*) voidP2);
printf("%d\n",((char*)voidP1)++);
NULL 포인터
NULL은 포인터를 초기화하는데 사용하는 상수 입니다. 포인터의 값이 NULL이면 포인터는 어떠한 대상도 가르키고 있지 않다는 것을 의미합니다.
NULL은 위와 같이 포인터를 초기화할 떄나 특정 포인터의 값이 NULL인지 확인 하는데 사용됩니다. 예를 들면 다음과 같습니다.
int* ptr = NULL;
if(ptr==NULL)
오늘은 void포인터와 NULL포인터에 대해서 알아 보았습니다. 수고하셨습니다.
'프로그래밍 > C언어' 카테고리의 다른 글
[C언어] 포인터(9) - 함수와 포인터(값에 의한 호출, 참조에 의한 호출) (1) | 2017.05.11 |
---|---|
[C언어] 포인터(8) - 포인터와 문자열 (1) | 2017.05.05 |
[C언어] 포인터(6) -[] 연산자 (1) | 2017.04.28 |
[C언어] 포인터(5) - 포인터의 연산 (2) | 2017.04.26 |
[C언어] 포인터(4) - 포인터의 형변환, 상수포인터 (0) | 2017.04.25 |