본문 바로가기

시스템 프로그래밍/C/C++/C#

[C/C++] 포인터도 증감이 가능할까?


사실 배열의 어떤 부분을 주소 받는 포인터의 경우 그 다음 주소를 받기 위해 또 포인터를 초기화 하곤했다.
예를 들어어

1
2
3
4
5
int arrayPoint = 3;
p = &array[arrayPoint];
cout << p;
p = &array[++arrayPoint];
cout << p;

이렇게 지정하곤 했는데, 책을 보다보니 증감이 가능하다는 것이다.

사실 주소가 124일경우 ++연산자로 증감을 한다면, 125가 되므로 int자료형은 4바이트이니까 안될 줄 알았다. 하지만 포인터의 경우 선언된 포인터 자료형에 따라 증감 연산자의 프로세스 또한 다르다는 것이다.

따라서 해당 상위 코드를 

1
2
3
p = &array[3];
cout << p;
cout << ++p;

이렇게 바꿀 수 있다.

'시스템 프로그래밍 > C/C++/C#' 카테고리의 다른 글

[C++] 1일차 복습  (0) 2015.01.28
[C/C++] 분기(Goto)에 관하여  (0) 2014.12.23
[C언어] Vigenere 알고리즘  (1) 2014.06.09