一维、二维数组向SAFEARRAY转换

本文详细介绍了如何将二维整型数组转换为SAFEARRAY,以C++代码示例展示了3*3数组的转换过程,包括SAFEARRAYBOUND的定义、SafeArrayCreate函数的使用以及SafeArrayPutElement进行元素填充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         VARIANT中有一个成员是parray,它的类型是SAFEARRAY*。当把一个数组转换成VARIANT类型时,实质上就是与SAFEARRAY之间的转换。

       这里以整型数组为例。

       一维数组的转换在http://blog.csdn.net/primer_programer/archive/2008/08/06/2775106.aspx 这片文章中已说明。下面说一下二维数组的转换。

       定义二维3*3的整形数组如下:

int arg2[3][3] = {1, 2, 1,

                           3, 4, -1,

                           0, 2, 0};

       转换的方法:

       VARIANT varArg1;

       SAFEARRAY *psa;

       SAFEARRAYBOUND rgsabound[2]; // 二维需要定义两个元素

       rgsabound[0].lLbound = 0;                  // 一维的下界(下界就是下标的最小值)

       rgsabound[0].cElements = 3;               // 一维的元素的个数

       rgsabound[1].lLbound = 0;                  // 二维的下界

       rgsabound[1].cElements = 3;               // 二维的元素的个数

       long lIndex[2];                                   // 定义索引

       psa = SafeArrayCreate(VT_I4, 2, rgsabound); // 按照二维数组分配空间

       for (long k = 0; k < (long)3; k++)

       {

              lIndex[0] = k;

              for ( long num = 0; num < (long)3; num++ )

              {

                     lIndex[1] = num;

                     SafeArrayPutElement (psa, lIndex, &arg2[k][num]); // lIndex作为SAFEARRAY中的索引。

              }

       }

       varArg1.vt = VT_ARRAY | VT_I4;             // 类型

       varArg1.parray = psa;                                // 赋值

 

       SafeArrayDestroyData( psa );

 

       这样就实现了整型数组到SAFEARRAY的转换。

   

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值