C/C++单元测试工具Visual Unit 4在线帮助


数组与序列赋值

数组的一般规则
    可以对数组的各个项分别填写数据,如下图的case 1,也可以对数组整体填写数据,如下图的case 2,如果数组整体填写了数据,且某些项也填写了数据,则项的数据将覆盖整体中的对应数据,如下图的case 3,数组的前三项的赋值结果为{1,2,30}。
   
 

不能将数组设为NULL的情形
    结构或类成员中的数组,不能设为NULL,如下代码,pData->arr != NULL恒为真,即该条件的假值不可能覆盖,换句话说,该条件是多余的。原因是pData->arr的值是pData指针的值加arr的偏移量,即其值为(unsigned int)pData + sizeof(int),不可能为0。

   
struct XData
    {
        int a;
        int arr[10];
        int b;
    };

    int XDataTest(XData* pData)
    {
        if(pData != NULL && pData->arr != NULL)
            return pData->arr[0];
        return 0;
    }

一维数组设为NULL
    一维数组,可在表格中直接填NULL,像一般指针一样。

二维数组设为NULL
    由于编译器不允许将指针转换为二维数组,二维数组需要用代码方式设置为NULL,示例如下:
    //被测函数
    int arrtest(int data[10][10])
    {
        if(data == NULL)
            return 0;
        return data[0][0];
    }
    要将data设为NULL,需增加一个用例代码(在用例代码窗口,点击),并切换到显示完整代码模式,将参数data改为直接传递0,如下图:

   


序列赋值
   
序列赋值是针对复合类型的数组的一种简化赋值方式,如下图,case 1和case 2的赋值结果是相同的。case 2对数组的各个项分别填值,比较麻烦,尤其是数据类型比较复杂时,需要展开太多的行,且切换到表格模式后,也会有很多行。case 1使用了序列赋值,语法是使用英文逗号(,)分隔多个值,系统会自动分配到数组各项的对应位置。
    序列赋值名为赋值,实际上适用于输入和输出。
    序列赋值是很常用的功能,例如,链表、映射表等集合都是利用回调赋值通过数组来赋值的,请参考回调赋值概述