1
2
3
4
5
6
7
8
9
10
11
12
13
#include<Stdio.h>
 
int main(void) {
 
    char temp[5= { "ABCD" };
 
    int* pint = temp;
    *pint = *pint + 0x01010101;
 
    printf("%s", pint);
    
    return 0;
}
cs

char 형 배열에 ABCD를 정의하고, int의 포인터에 배열의 주소를 저장했다.

 

pint는 int형 포인터이므로, (*pint) 는 pint에 저장된 주소로부터 4바이트(int형의 크기)를 int형 변수로 지정한다는 의미이다.

 

다시말해 정수 0x41424344 (ABCD의 아스키 코드값이 연속된 형태) 를 다룰 수 있게된다.

 

여기서 각바이트 마다 1씩 증가시킨뒤에 문자열 출력을 해보면 ABCD가 아닌 BCDE를 출력할 수 있게된다.

 

 

간접 지정연산자(*)는 포인터 변수에 저장된 주소값을 포인터 변수의 자료형으로 강제로 맞춰서 다루는 연산자로 생각한다.

 

 

'Programing > 명강의 C' 카테고리의 다른 글

포인터 배열  (0) 2019.05.12
동적할당 이용  (0) 2019.05.07

+ Recent posts