Atributos de matriz

Hay una relación estrecha entre matrices y punteros en el lenguaje C. Cuando se pasa como parámetro a una función, un nombre de matriz se trata como puntero al primer elemento de la matriz, como se muestra en el ejemplo siguiente:

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

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

    fLocal1(chArray);
}

En una llamada local, puede usar el parámetro de puntero para desplazarse por la memoria y examinar el contenido de otras direcciones:

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

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

Cuando un cliente pasa un puntero a un procedimiento remoto, el código auxiliar del cliente transmite tanto el puntero como los datos a los que apunta. A menos que el puntero esté restringido a sus datos correspondientes, toda la memoria del cliente debe transmitirse con cada llamada remota. Al aplicar escritura segura en la definición de interfaz, MIDL limita el procesamiento de código auxiliar de cliente a los datos que corresponden al puntero especificado.

El tamaño de la matriz y el intervalo de elementos de matriz transmitidos al equipo remoto pueden ser constantes o variables. Cuando estos valores son variables y, por tanto, determinados en tiempo de ejecución, debe usar atributos en el archivo IDL para especificar cuántos elementos de matriz se van a transmitir. Los siguientes atributos MIDL admiten límites de matriz.

Atributo Descripción Default
[ first_is] Índice del primer elemento de matriz transmitido. 0
[ last_is] Índice del último elemento de matriz transmitido. -
[ length_is] Número total de elementos de matriz transmitidos. -
[ max_is] Valor de índice de matriz válido más alto. -
[ min_is] Valor de índice de matriz válido más bajo. 0
[ size_is] Número total de elementos de matriz asignados para la matriz. -

 

Nota

El atributo min_is no se implementa en RPC. El índice de matriz mínimo siempre se trata como cero.