Ex11-주소의 가감산 (char)

CODEDRAGON Development/C, C++

반응형

   

주소의 가감산

char형 변수, char형 1차원 포인터, char형 2차원 포인터의 주소 가산

모든 자료형은 모두 조소를 가지며 주소의 가감산이 가능합니다.

각각의 주소를 가감산하면 자료형의 크기에 따라 결과가 다르게 나타납니다.

char형 주소 +1

1byte 증가

int형 주소 +1

4byte 증가

double형 주소 +1

8byte 증가

   

   

메모리 구조

   

   

소스코드

   

#include <stdio.h>

int main( ) {
                char c='A';
                char* cp=NULL;
                char** cpp=NULL;

                cp=&c;
                cpp=&cp;

                printf("%x %x %x \n", &c, &cp, &cpp);
                printf("%x %x %x \n", &c+1, &cp+1, &cpp+1);
                //&c+1:         char
(1byte)만큼 증가
                //&cp+1:        1
차원 포인터형(4byte)만큼 증가
                //&cpp+1:       2
차원 포인터형(4byte)만큼 증가
                printf("%c %x %x \n", c, cp, cpp);
                printf("%c %x %x \n", c+1, cp+1, cpp+1);
                //c+1:  c
저장된 값에 1 더하여 문자 B 출력 (A 아스키코드값 65에서 1증가하여 66)
                //cp+1  cp
&c 저장되어 있어서 &c+1 같은 표현이 되어 &c char(1byte)만큼 증가한 값이 출력
                //cpp+1 cpp
&cp 저장되어 있어서 &cp+1 같은 표현이 되어 &cp 1차원 포인터형(4byte)만큼 증가한 값을 출력

                return 0;
}


   

   

출력결과