포인터 자료형
포인터에도 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; //해당 구문이 어떤결과를 나타낼지 예측하기 어렵다. } |
그림을 예제를 구성해 봤습니다.
보다 컴파일러 마다 컴파일시 결과가 틀리다 어떤 것은 자료형이 다르면 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 |