포인터 산술 연산Pointer Arithmetic

포인터와 정수가 포함된 가감 연산은 포인터 피연산자가 배열 멤버의 주소를 지정하고 정수 값이 동일한 배열의 경계 내에서 오프셋을 생성하는 경우에만 의미 있는 결과를 제공합니다.Additive operations involving a pointer and an integer give meaningful results only if the pointer operand addresses an array member and the integer value produces an offset within the bounds of the same array. 정수 값이 주소 오프셋으로 변환될 때 컴파일러는 동일한 크기의 메모리 위치만 원래 주소와 오프셋을 더한 주소 사이에 있다고 가정합니다.When the integer value is converted to an address offset, the compiler assumes that only memory positions of the same size lie between the original address and the address plus the offset.

이 가정은 배열 멤버에 대해 유효합니다.This assumption is valid for array members. 정의에 따라 배열은 형식이 동일한 일련의 값입니다. 배열의 요소는 인접한 메모리 위치에 있습니다.By definition, an array is a series of values of the same type; its elements reside in contiguous memory locations. 그러나 배열 요소를 제외한 모든 형식의 저장소는 동일한 형식의 식별자로 채워지도록 보장되지 않습니다.However, storage for any types except array elements is not guaranteed to be filled by the same type of identifiers. 즉, 공백이 메모리 위치 사이에 나타날 수 있으며, 심지어 동일한 형식의 위치 사이에도 공백이 나타날 수 있습니다.That is, blanks can appear between memory positions, even positions of the same type. 따라서 배열 요소를 제외한 값의 주소에서 더하거나 뺀 결과는 정의되지 않습니다.Therefore, the results of adding to or subtracting from the addresses of any values but array elements are undefined.

마찬가지로 두 포인터 값을 빼는 경우 변환에서는 공백이 없는 동일한 형식의 값만 피연산자가 제공하는 주소 사이에 있다고 가정합니다.Similarly, when two pointer values are subtracted, the conversion assumes that only values of the same type, with no blanks, lie between the addresses given by the operands.

참고 항목See Also

C 가감 연산자C Additive Operators