배열 특성

C 언어의 배열과 포인터 간에는 긴밀한 관계가 있습니다. 함수에 매개 변수로 전달되면 배열 이름은 다음 예제와 같이 배열의 첫 번째 요소에 대한 포인터로 처리됩니다.

/* fragment */
extern void f1(char * p1);

void main(void)
{
    char chArray[MAXSIZE];

    fLocal1(chArray);
}

로컬 호출에서 포인터 매개 변수를 사용하여 메모리를 행진하고 다른 주소의 내용을 검사할 수 있습니다.

/* dump memory (fragment) */
void fLocal1(char * pch1)
{
    int i;

    for (i = 0; i < MAXSIZE; i++)
       printf("%c ", *pch1++);
}

클라이언트가 원격 프로시저에 포인터를 전달하면 클라이언트 스텁은 포인터와 포인터가 가리키는 데이터를 모두 전송합니다. 포인터가 해당 데이터로 제한되지 않는 한 모든 클라이언트의 메모리는 모든 원격 호출과 함께 전송되어야 합니다. 인터페이스 정의에 강력한 입력을 적용하여 MIDL은 클라이언트 스텁 처리를 지정된 포인터에 해당하는 데이터로 제한합니다.

배열의 크기와 원격 컴퓨터에 전송되는 배열 요소의 범위는 상수 또는 변수일 수 있습니다. 이러한 값이 변수이므로 런타임에 결정되는 경우 IDL 파일의 특성을 사용하여 전송할 배열 요소 수를 지정해야 합니다. 다음 MIDL 특성은 배열 경계를 지원합니다.

attribute 설명 기본값
[ first_is] 전송된 첫 번째 배열 요소의 인덱스입니다. 0
[ last_is] 전송된 마지막 배열 요소의 인덱스입니다. -
[ length_is] 전송된 배열 요소의 총 수입니다. -
[ max_is] 가장 높은 유효한 배열 인덱스 값입니다. -
[ min_is] 유효한 배열 인덱스 값이 가장 낮습니다. 0
[ size_is] 배열에 할당된 총 배열 요소 수입니다. -

 

참고

min_is 특성은 RPC에서 구현되지 않습니다. 최소 배열 인덱스는 항상 0으로 처리됩니다.