调用函数 // "]"令牌之前的预期主表达式
Calling function // expected primary-expression before "]" token
`#include <iostream>
using namespace std;
#define N 10
void QuickSort(int arr[],int left,int right)
{
int i = left, j = right;
int buffer;
int middle = arr[(left+right)/2];
//partition
while(i<=j)
{
while(arr[i]<middle)
i++;
while(arr[j]>middle)
j--;
if(i<=j)
{
buffer = arr[i];
arr[i] = arr[j];
arr[j] = buffer;
i++;
j--;
}
}
//recursion
if (left < j)
QuickSort(arr, left, j);
if (i < right)
QuickSort(arr, i, right);
}
int main()
{
int A[N] = {10,9,8,7,6,5,4,3,2,1};
QuickSort(A[],A,A+N); //ERROR
return 0;
}`
好了,伙计们,这是我的问题。我真的不知道如何调用函数来对标准的非动态数组进行排序。当我尝试使用QuickSort(A[],A,A+N)调用QuickSort(int A[],int左,int右)时,会出现"期望的主表达式之前"的错误。提前感谢您的反馈
就像这样传递a。另外,您的第二个和第三个参数都是int值,因此虽然我不会深入研究代码的逻辑,但您应该选择一个整数来为您的数组排序提供边界。现在传入的是数组中第一个元素的int *,然后第三个参数是值+ n !
#include <iostream>
using namespace std;
#define N 10
void QuickSort(int arr[],int left,int right)
{
int i = left, j = right;
int buffer;
int middle = arr[(left+right)/2];
//partition
while(i<=j)
{
while(arr[i]<middle)
i++;
while(arr[j]>middle)
j--;
if(i<=j)
{
buffer = arr[i];
arr[i] = arr[j];
arr[j] = buffer;
i++;
j--;
}
}
//recursion
if (left < j)
QuickSort(arr, left, j);
if (i < right)
QuickSort(arr, i, right);
}
int main()
{
int A[N] = {10,9,8,7,6,5,4,3,2,1};
QuickSort(A,0,N); //DO THIS
return 0;
}
两件事:
- 单独通过
A
。 -
left
和right
是数组索引,不是指针。
试一试:
int A[N] = {10,9,8,7,6,5,4,3,2,1};
QuickSort(A, 0, N - 1); // array length N means the last element is index N-1.
在将数组传递给函数时不应该使用大括号,似乎你的代码应该是:
QuickSort(A,0,0+N);
相关文章:
- C++模板函数中的初始化 - 新的初始值设定项表达式列表被视为复合表达式
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 折叠表达式和函数名称查找
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- 不是 lambda 函数中的常量表达式
- 保证逻辑 AND 表达式中的函数调用
- 函数调用在常量表达式中必须具有常量值
- Tbb 库:错误:编写自定义类函数而不是 lambda 表达式时,对函数的调用不匹配
- 错误:表达式不能用作函数
- 使用表达式 SFINAE 的函数模板的类外定义
- std::cout 在打印变量与函数表达式时的行为不同
- 构造函数中缺少表达式
- 如何在使用模板的函数调用的大括号表达式中推导多维数组的大小
- C++98 中的常量表达式函数
- gcc 是否将非常量表达式函数的内置视为常量表达式
- 试图理解基本的正则表达式函数在c++
- 错误:','令牌之前的预期主表达式 //函数调用