【问题标题】:Swapping elements in array doesn't work when using function pointer使用函数指针时交换数组中的元素不起作用
【发布时间】: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++


【解决方案1】:

您可能打算使用= 运算符而不是==

【讨论】:

  • 大声笑,对不起,这是一个最愚蠢的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多