C++全局变量与局部变量

当函数的 形参数组 和 全局数组 重名时,在此函数内对数组的操作并不会影响全局数组。所以说,若是全局变量就不要放进函数参数了。

问题来源:

vector<int> arr;
void heapsort(vector<int> arr, int left, int right)
{
    if (left >= right) return;
    for (int i = right; i >=0; i-=2)   
    {
        int index = (i - 1) / 2;
        int sonleft = 2 * index + 1;
        int sonright = 2 * index + 2;
        if (sonright > right) sonright = sonleft;
        if (arr[index] < arr[sonright]) swap(arr[index], arr[sonright]);
        if (arr[index] < arr[sonleft]) swap(arr[index], arr[sonleft]);
    }
    swap(arr[0], arr[right]);
    heapsort(0, right - 1);
}

这段代码中函数heapsort对arr的操作对全局arr不起作用,小问题好浪费时间啊。。。。。。。

原文地址:https://www.cnblogs.com/hqdong123/p/13608391.html