假设我有这个结构:
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;
和iCntr
并且iSmallest
包含要交换的记录的索引我的代码不起作用,但我该如何修复它? 最佳答案
你需要交换元素,而不是指针,
struct MyStruct stTmp;
if (iSmallest != iCntr) {
stTmp = stXDB[iCntr];
stXDB[iCntr] = stXDB[iSmallest];
stXDB[iSmallest] = stTmp;
}
效率不高,但结构很小,所以比交换指针要贵一点。