포인터도 값이니 사칙연산이나 증감 연산자를 적용할 수 있지 않을까?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 1234;
int *p = #
printf("%p\n", p);
printf("%p", p+1);
}
포인터p의 값이 1000이라고 했을 때 p+1은 1001이 될까?
포인터 변수에 대해서도 덧셈과 뺄셈은 수행할 수 있지만, 정수 변수의 덧셈과는 다른 양상을 보인다.
변수의 타입에 따라 연산의 단위가 달라진다.
주소를 값으로 바꿔주는 * 연산자에 대해서 덧셈과 뺄셈을 수행해도 직관적인 결과를 얻을 수 있다.
배열과 같은 양상으로 연산을 수행한다.
당연하겠지만, *(ptr) +1을 출력하면 12가 출력되고, 배열 범위를 벗어나면 오류 대신 쓰레기값이 출력된다.
배열에 대해서 연산을 수행해도 마찬가지이다.
int a[] = {1,2,3,4};
이 배열에서, a+1을 출력하면 a의 주소값에서 4 증가된 값이 출력된다.
+) 주의! &arr[0] + 1 은 &( arr[0] ) + 1 과 같다.
+) *(arr + i) 는 arr[i]와 같다고 이해할 수 있다.