不确定什么是“良好实践”或被认为更“正确”。我有一个数组,我想通过 arrayname[] 以外的名称访问各个元素。我可以使用#defines 或指针,也可能使用其他方式。
Example:
#define value1 myarray[1]
int myarray[SIZE];
value1 = 5;
or
int myarray[SIZE];
int *ptr;
ptr = &myarray[1];
*ptr = 5;
在我看来,#define 路线更简单,使用的内存更少,但可能会带来一堆我不知道的问题。任何见解都会很棒,我希望尽可能让我的代码遵循普遍接受的标准。
*编辑:也许有更好的方法。我的最终目标是获得一个将从外围端口发送出去的数组。然而,数据由非常不同的数据集组成,并且单个数组名称不能代表所分配的数据。我的记忆非常有限,所以我想避免重复存储每个值。
我提出第三种选择,例如:
#define VALUE1_IDX 1
int myarray[SIZE];
myarray[VALUE1_IDX] = 5;
与 #1 相比,它的优点在于,您仍然很明显地使用了 myarray,而与#2 相比,它的优点是,正如您所说,避免了指针。我怀疑,但尚未证实,通过优化,选项 #2 不会产生额外的内存使用,尽管看起来很直观。
我认为最好的解决方案会根据具体情况而有所不同,并且我认为您的两个选择中的任何一个在正确的情况下都是可行的。
编辑:为了呼应凯文的评论,首先值得检查的是,当您不集体处理值时是否可以避免使用数组。我意识到,在某些情况下,这当然不适用,例如,如果您阅读一条长消息并只想简单地提取几个关键值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)