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 |