我正在研究一个使用快速排序算法的小型程序。 不幸的是,我的交换功能无法正常工作。 我只想将array [i]与array [j]交换,但是它说a和b没有声明。
void swap(int data[a], data[b]) {
int temp = data[a];
data[a] = data[b];
data[b] = temp;
return data[a], data[b];
}
答案 0 :(得分:1)
您的代码中有几个问题...
首先,您要交换两个整数(在数组中)的值,因此该函数正在int
上运行。此外,您还想修改参数,因此您应该使用引用(没有指针,因为传递空指针对于swap
没有意义)。
接下来,您在函数中有一个return
语句,该语句被声明为不返回任何内容(void
返回类型)。还有这个
return data[a], data[b];
除了声明为void
的错误数据类型和函数之外,它没有达到您的期望。逗号运算符计算两个操作数,结果是右侧的操作数。无论如何,这实际上并不重要,因为您无需返回任何内容(而是修改了参数)。
修复我们拥有的那些东西
void swap(int& a,int& b) {
int temp = a;
a = b;
b = temp;
}
但是,您实际上不应该编写此代码。 <utility>
中有std::swap
,已经可以满足您的要求。
PS :将c样式的数组传递给函数是完全不同的故事。您无需将数组传递给函数即可仅修改其两个元素。无论如何,您可能应该使用std::vector
,因为它更容易使用。