在C++中调用排序函数
我使用插入排序函数对5000 int升序数组进行排序。当我将数组的地址传递给函数调用时,我得到[Error]名称查找“i”已更改为“ISO”for“scoping[-fppermissive]。也许我应该使用向量,但我不熟悉它们。也许我编错了什么在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) {
#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意味着相同的事情。'