在C++中调用排序函数

在C++中调用排序函数,c++,arrays,sorting,C++,Arrays,Sorting,我使用插入排序函数对5000 int升序数组进行排序。当我将数组的地址传递给函数调用时,我得到[Error]名称查找“i”已更改为“ISO”for“scoping[-fppermissive]。也许我应该使用向量,但我不熟悉它们。也许我编错了什么 #include <iostream> #define SIZE 5000 //array size using namespace std; void insertionSort(int arr[], int length) {

我使用插入排序函数对5000 int升序数组进行排序。当我将数组的地址传递给函数调用时,我得到[Error]名称查找“i”已更改为“ISO”for“scoping[-fppermissive]。也许我应该使用向量,但我不熟悉它们。也许我编错了什么

#include <iostream>
#define SIZE 5000 //array size
using namespace std;

void insertionSort(int arr[], int length) {
      int i, j, tmp;
      for (i = 1; i < length; i++) {
            j = i;
            while (j > 0 && arr[j - 1] > arr[j]) {
                  tmp = arr[j];
                  arr[j] = arr[j - 1];
                  arr[j - 1] = tmp;
                  j--;
            }
      }
}

int main() {
    int a[SIZE];
    int count = 1;

    for(int i=0; i<SIZE; i++) {
        a[i] = count;
        count++;
    }

    for(int i = 0; i < SIZE; i++) {
        printf("%d\t", a[i]);
    }

    insertionSort(&a[i], SIZE);
}

你可能想打电话

 insertionSort(a, SIZE)

你可能想打电话

 insertionSort(a, SIZE)
//插入排序&a[i],大小;在这里,您没有在funciton main中声明i,只在for循环中声明i。对insertionSort的调用不在您的循环中

传递&a[0]和a的意思相同。

/insertionSort&a[i],SIZE;在这里,您没有在funciton main中声明i,只在for循环中声明i。对insertionSort的调用不在您的循环中


传球&a[0]和a的意思是一样的。

Wow。非常感谢。我以为只能通过引用传递数组参数。我不只是想要一个补丁,你能解释一下为什么我不需要传递地址,而只是传递数组吗?再次感谢您的建议。数组标识符指向数组的开头,因此它实际上已经是地址了。哇。非常感谢。我以为只能通过引用传递数组参数。我不只是想要一个补丁,你能解释一下为什么我不需要传递地址,而只是传递数组吗?再次感谢您的建议。数组标识符指向数组的开头,因此它实际上已经是地址。在您的主函数中,调用insertionSort&a[i],SIZE;时未定义i;。这是因为我只存在于你的for循环中。。。请参阅下面的@michael schmitt Response。在您的主函数中,调用insertionSort&a[i],SIZE;时未定义i;。这是因为我只存在于你的for循环中。。。请参阅下面的@michael schmitt答案。感谢大家抽出时间。“通过&a[0]和a意味着同样的事情。”——这是错误的。应该是:“传球&a[0]和a的意思是一样的。”谢谢大家抽出时间。“传球&a[0]和a的意思是一样的。”——这是错误的。应该是:'通过&a[0]和a意味着相同的事情。'