방법: 포인터 증가 및 감소(C# 프로그래밍 가이드)
증가 및 감소 연산자인 ++ 및 -- 연산자를 사용하면 pointer-type*형식의 포인터에 대해 sizeof(pointer-type)만큼 포인터 위치를 변경할 수 있습니다. 증가 및 감소 식의 형태는 다음과 같습니다.
++p;
p++;
--p;
p--;
증가 및 감소 연산자는 void* 형식을 제외한 모든 형식의 포인터에 적용할 수 있습니다.
pointer-type 형식의 포인터에 증가 연산자를 적용하면 포인터 변수에 포함된 주소에 sizeof(pointer-type)가 더해집니다.
pointer-type 형식의 포인터에 감소 연산자를 적용하면 포인터 변수에 포함된 주소가 sizeof(pointer-type)만큼 감소합니다.
연산이 포인터의 도메인에서 오버플로되어도 예외는 발생하지 않으며, 연산의 결과는 구현에 따라 다릅니다.
예제
이 예제에서는 포인터를 int의 크기만큼 증가시키면서 배열의 요소를 차례로 표시합니다. 포인터가 증가할 때마다 배열 요소의 내용 및 주소가 표시됩니다.
// compile with: /unsafe
class IncrDecr
{
unsafe static void Main()
{
int[] numbers = {0,1,2,3,4};
// Assign the array address to the pointer:
fixed (int* p1 = numbers)
{
// Step through the array elements:
for(int* p2=p1; p2<p1+numbers.Length; p2++)
{
System.Console.WriteLine("Value:{0} @ Address:{1}", *p2, (long)p2);
}
}
}
}