【发布时间】:2022-08-03 17:54:05
【问题描述】:
所以我想使用 AscendingSort() 和 DecendingSort() 作为参数,但似乎在返回值之后交换部分被跳过了,希望有人向我解释,谢谢!
bool AscendingSort(int a, int b)
{
return a > b;
}
bool DecendingSort(int a, int b)
{
return a < b;
}
void SortArray(int* a, int size, bool(*func)(int, int))
{
int saveElement;
for (int x = 0; x < size; x++)
{
for (int y = x + 1; y < size; y++)
{
if (func(a[x], a[y]))
{
saveElement = a[x];
a[x] == a[y]; //Those 2 lines getting skipped.
a[y] == saveElement;
}
}
}
}
void main()
{
int a[1000];
int arrSize;
SortArray(a, arrSize, AscendingSort);
};
-
这真的是您正在运行的代码吗?因为你既没有初始化
a也没有初始化arrSize,导致函数调用满了未定义的行为 -
代码有什么问题?你是什么意思 \"//那些 2 行被跳过。\" ?你是怎么得出这个结论的?
标签: c++