'Pointer'에 해당되는 글 1건

  1. 2008.08.26 포인터 casting 실습

#include <stdio.h>

int main()
{
        char ch; int num; float f_num; double d_num;
        ch = 'A'; num = 5000; f_num = 3.14; d_num = f_num * 2;

        printf("\n모든 변수의 선두주소 출력\n");
        printf("%p %p %p %p\n", &ch, &num, &f_num, &d_num);

        printf("\n주소를 변소의 자료형에 맞게 증감\n");
        printf("%p %p %p %p\n", &ch + 1, &num + 1, &f_num + 1, &d_num + 1);

        printf("\n모든 주소의 자료형을 char 형으로 변환하여 증감\n");
        printf("%p %p %p %p\n", (char*)&ch + 1, (char*)&num + 1, (char*)&f_num + 1, (char*)&d_num + 1);

        printf("\n모든 주소의 자료형을 int 포인터형으로 변환하여 증감\n");
        printf("%p %p %p %p\n", (int*)&ch + 1, (int*)&num + 1, (int*)&f_num + 1, (int*)&d_num + 1);

        return 0;
}

예를 들어 (char*) 에 의해 주소의 자료형이 (int*) 에서 (char*) 가 된다. char * 로 변환된 주소에 1을 더한

결과는 char 형이므로 1바이트 증가한 결과가 된다.

옵션을 포함한 컴파일 :  gcc -O2 -Wall -o cast.out -I /usr/include/ cast.c

optimization 2 level, 모든 에러메시지 출력, output file 은 cast.out, include 파일은 /usr/include



사용자 삽입 이미지

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요