陣列屬性

陣列與 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 屬性支援陣列界限。

屬性 描述 預設
[ first_is] 傳輸之第一個陣列專案的索引。 0
[ last_is] 所傳輸之最後一個陣列專案的索引。 -
[ length_is] 傳輸的陣列元素總數。 -
[ max_is] 最高的有效陣列索引值。 -
[ min_is] 最低的有效陣列索引值。 0
[ size_is] 配置給陣列的陣列元素總數。 -

 

注意

MIN_IS屬性不會在 RPC 中實作。 最小陣列索引一律視為零。