数组特性

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 说明 默认
[第一个 _ 是] 传输的第一个数组元素的索引。 0
[最后一个 _ 为] 传输的最后一个数组元素的索引。 -
[长度 _ 为] 传输的数组元素总数。 -
[最大值 _ 为] 最高有效数组索引值。 -
[最小值 _ 为] 最小有效数组索引值。 0
[大小 _ 为] 为数组分配的数组元素总数。 -

备注

RPC 中未实现 最小值 _ 特性。 最小数组索引始终被视为零。