잘못된 자료형을 가리키는 포인터 변수

포인터 변수의 자료형과 실제로 가리키는 변수의 자료형이 일치해야 한다.

 

다음의 예제를 보자

#include <stdio.h>

int main()
{
        int inum;
        float *fp;
        
        fp = &inum;
       
        inum = 399;
        *fp = fp +1;
        printf("%d\n, *fp);
        return 0;
        
}

pointer06-01.png

 

프로그램 설명

float형의 포인터변수 fp가 int형의 변수 inum의 주소를 받았다. fp는 잘못괸 자료형을 가리키게 되어 컴파일 단계에서 warning 이 발생하고, 실행하면 잘못된 결과가 나온다.

포인터 변수가 다른 자료형의 변수를 가리키면 프로그램의 오류를 발생시킨다. 따라서 포인터 변수를 사용할 때는 적절한 자료형을 사용하는 것이 필요하다.

 

 

#include <stdio.h>

int main()
{
        float fnum;
        float *fp;
        
        fp = &fnum;
       
        fnum = 399;
        *fp = fp +1;
        printf("%\n, *fp);
        return 0;
        
}

로 하면 정상적으로 출력 된다.

 pointer06-02.png