달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2015. 10. 23. 07:37

void* 프로그래밍/자료구조설계2015. 10. 23. 07:37

void*

void포인터는 어떤 타입의 포인터든 다 받을 수 있는 포인터이다.

받는 것은 어떤 포인트형이든 다 받을 수 있다.

그런데 그 포인터에 접근할 때는 해당 포인트의 자료형에 맞에 접근해야 한다.

한마디로, 주소값이 void*에 들어갈때는 자유로우나 나올때는 알맞게 접근해야한다.

다음 예제를 보면 알기쉽다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(){
    void* ptr;
 
    int i = 7;
    float f = 23.5;
 
    ptr = &i;
    printf("%d\n"*((int*)ptr));
 
    ptr = &f;
    printf("%f\n"*((float*)ptr));
 
    return 0;
}
 
cs

10줄과 13줄에 포인터가 int*와 float*f 로 형변환 시켜서 포인터에 접근한 것을 확인할 수 있다.

형변환 해주지 않으면 에러가 나서 컴파일이 안된다. 



'프로그래밍 > 자료구조설계' 카테고리의 다른 글

인터넷 check sum 함수의 구현  (0) 2016.02.08
다운  (0) 2016.02.07
열거형 enum  (1) 2015.10.23
윈도우에서 리눅스처럼 컴파일하기  (1) 2015.09.19
:
Posted by youjin.A