포인터 자료형


포인터에도 int* i, char *ch, double* do...등등 처럼 여러개의 자료형이 존재 한다.

이처럼 여러개의 자료형이 존재 하는 이유는 포인터가 가리켜야 할 자료 사이즈를 정확히 알기 위해서다.



포인터의 자료형


다음 그림을 통해 이해를 도와 보도록 하겠다.

위에 그림은 int 자료형 데이터를 char*, int* 두개를 가리키도록 했다.

int 자료형은 4byte인데 char*로 가리키면 어떻게 될까?

char형은 1바이트 밖에 안되서 char*의 값은 제대로 가져 올 수가 없다.


#include <stdio.h>


int main()

{

int nValue = 10;

int* pInt = &nValue;

char* pCh = &nValue; //해당 구문이 어떤결과를 나타낼지 예측하기 어렵다.
        printf(" %d %d \n", *pInt, *pCh );

}



그림을 예제를 구성해 봤습니다.

보다 컴파일러 마다 컴파일시 결과가 틀리다 어떤 것은 자료형이 다르면  Error가 발생해 

실행이 안 될 수도 있고 Warnning만 발생할 수도 있다.

printf 결과도 컴파일러 OS별로 천차 만별이다. 

(windows10, visual c++에서는 char*에 int 주소를 넣었을때 친절하게 컴파일 오류가 발생한다.)


여기서 말하고자 하는 것은 포인터 자료형을 실제 데이터의 자료형과 일치 하도록 주의를 기울여야 프로그램을 작성해야

여러분이 원하는 올바른 결과를 얻을 수 있습니다.








반응형

'프로그램 > C' 카테고리의 다른 글

[C] 포인터와 배열  (0) 2017.07.19
[C] 시간차이 구하기 ( millisecond 까지.. )  (0) 2017.07.16
[C] 포인터 기초  (0) 2017.07.06
[C] 배열 사용법  (0) 2017.03.22
[C] goto 제어문 사용법  (0) 2017.03.18

+ Recent posts