假设我有这个结构:
struct MyStruct {
int iID;
int iMyNumber;
};
然后我定义一个 MyStructs 数组:
struct MyStruct msTest[3];
我正在通过查看 ID 对类似于此的结构进行排序操作。现在,一旦我发现应该交换哪些记录来对数组进行排序,我就必须进行实际的交换。我试过这个:
if (iSmallest != iCntr) {
stPTmp = &stXDB[iCntr];
&stXDB[iCntr] = &stXDB[iSmallest];
&stXDB[iSmallest] = &stPTmp;
}
stPTmp 定义为void *stPTmp;
and iCntr
and iSmallest
包含要交换的记录的索引。我的代码不起作用,但如何修复它?
您需要交换元素,而不是指针,
struct MyStruct stTmp;
if (iSmallest != iCntr) {
stTmp = stXDB[iCntr];
stXDB[iCntr] = stXDB[iSmallest];
stXDB[iSmallest] = stTmp;
}
效率不是很高,但是你的结构很小,所以它只比交换指针贵一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)