【发布时间】:2011-12-13 13:30:23
【问题描述】:
能够定义一个数组,例如
int a[] = {1,2,3};
非常方便,但是数组 a 是一个 r 值,所以我不能随后更改 a 中的值,例如
a[] = {4,5,6};
想要这样做的背景是编写一堆单元测试,我在其中将数组输入函数并测试输出。我正在使用不同输入对同一函数运行测试,并且希望避免我的输入数组必须具有唯一名称,例如我必须这样做:
int test1_a[] = {1,2,3};
/* calls to functions */
int test2_a[] = {4,5,6};
/* calls to functions */
另外,如果我想将一个指向数组的指针传递给一个函数,我必须首先将它转换成这样:
int a[] = {1,2,3};
int *b = a;
my_func(&b);
像这样传递一个指向右值的指针是行不通的:
my_func(&a);
我的问题是是否有任何其他方法可以轻松地初始化一组值而不受这些限制的影响? (特别是为了方便编写许多类似的单元测试,而不需要每个测试都有一组唯一的数组名称)
【问题讨论】:
-
如果您唯一的问题是重新初始化数组而不重新编译,那么您可以从文件或数据库中读取它。 (不要忘记尺寸!)。
-
好点 - 我认为这可能是要走的路。我现在正在从 python 回到 C,因此所有这些(可能)关于基础的愚蠢问题......
标签: c arrays unit-testing pointers rvalue