Bagikan melalui


Atribut Array

Ada hubungan dekat antara array dan pointer dalam bahasa C. Saat diteruskan sebagai parameter ke fungsi, nama array diperlakukan sebagai penunjuk ke elemen pertama array, seperti yang ditunjukkan dalam contoh berikut:

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

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

    fLocal1(chArray);
}

Dalam panggilan lokal, Anda dapat menggunakan parameter pointer untuk berbaris melalui memori dan memeriksa konten alamat lain:

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

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

Ketika klien meneruskan pointer ke prosedur jarak jauh, stub klien mengirimkan pointer dan data yang dirujuknya. Kecuali penunjuk dibatasi untuk data yang sesuai, semua memori klien harus dikirimkan dengan setiap panggilan jarak jauh. Dengan memberlakukan pengetikan yang kuat dalam definisi antarmuka, MIDL membatasi pemrosesan client-stub ke data yang sesuai dengan pointer yang ditentukan.

Ukuran array dan rentang elemen array yang dikirimkan ke komputer jarak jauh dapat berupa konstanta atau variabel. Ketika nilai-nilai ini bervariasi, dan dengan demikian ditentukan pada durasi, Anda harus menggunakan atribut dalam file IDL untuk menentukan berapa banyak elemen array yang akan ditransmisikan. Atribut MIDL berikut mendukung batas array.

Atribut Deskripsi Default
[ first_is ] Indeks elemen array pertama yang ditransmisikan. 0
[ last_is ] Indeks elemen array terakhir yang ditransmisikan. -
[ length_is ] Jumlah total elemen array yang ditransmisikan. -
[ max_is ] Nilai indeks array tertinggi yang valid. -
[ min_is ] Nilai indeks array terendah yang valid. 0
[ size_is ] Jumlah total elemen array yang dialokasikan untuk array. -

 

Catatan

Atribut min_is tidak diimplementasikan dalam RPC. Indeks array minimum selalu diperlakukan sebagai nol.