COM中的一维数组

 

COM数组

COM中的一维数组主要分下以下几种类型:

1:固定数组,其维数大小是固定的,这种数组处理效率最高。主要的应用场合就是数组的大小预先可以确知,如是[in]时,就主要用这种数组了,声明语法如下

        HRESULT void Fly([in] int arr[5]);

调用时

        Int arr[5]=new int[]{1,2,3,4,5};

        Fly(arr);

2:适应性数组:数组的大小预先不知,就是说大小可以依赖其参数中的另一个参数,当然这个参数得要在它之前的了。声明语法如下。

        HRESULT void Fly([in] size,[out, size_is(size)] int arr[]);

                   HRESULT void Fly([in] size,[out, size_is(size)] int arr[*]);

                   HRESULT void Fly([in] size,[out, size_is(size)] int *arr);

调用时

       Int arr[5]=new int[]{1,2,3,4,5};

        Fly(5,arr);

在上面的声明中可以用max_is来替size_ismax_is指的数组中的最大的下标索引的大小。所以它总比size_is指定的小1.

前面的size也可以是输出类型的。只要是输出数组,这个参数就可以是输出类型的。

3:可变性数组:可以指定数组中的部分数据来列集,传输等,也就是只需给出部份有效的数据时就可以用到可变性数组了。声明语法如下。

         HRESULT void Fly([in] length,[in] first,[out, length_is(length),first_is(firt)] int arr[]);

         HRESULT void Fly([in] first,[in] last ,[out,first_is(first),last_is(last)] int arr[]);

调用

         Int arr[5]=new int[]{1,2,3,4,5};

Fly(0,3,arr);

用这种方式主要的优点就是可以只传输合适的区域节省了传输的开销,但是它在散集时的开销就增大了,不过对远程的来讲,这个开销算不了什么的了。

4:开放性数组,数组的大小可以指定,而且还可以指定传输的区域。就是综合了可变数组及适应性数组的表达。声明如下。

HRESULT void Fly([in] size,[in] length,[in] first,[out,size_is(size), length_is(length),first_is(firt)] int arr[]);

调用

         Int arr[5]=new int[]{1,2,3,4,5};

Fly(5,3,0,arr);

COM 中的一维数组主要就是上面所举的这些。

转载于:https://www.cnblogs.com/RobertXiao/archive/2007/08/24/868234.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值