我在c ++中编写了一些代码,它输入一个数组,这将被反转。 第一个成为倒数第二个,倒数第二个等等...... 这里是代码:
#include <iostream>
using namespace std;
const int length=3;
void exch(int arr_exch[]){
int s,e,tmp;
s=0;
e=length-1;
while ((e-s!=1)||(e-s!=0)){
tmp=arr_exch[s];
arr_exch[e]=arr_exch[s];
arr_exch[s]=tmp;
s=s+1;
e=e-1;
}
}
int main()
{
int arr[length],counter;
cout << "enter "<< length <<" integers:\n";
for (counter=0; counter<length; counter++){
cin >> arr[counter];
}
exch (arr[]); **<--- here the error "expected primary expression before ']' token.**
for (counter=0; counter<length; counter++){
cout << arr[counter]<<"\t";
}
return 0;
}
错误 - 现在 - 分段错误和&#34;预期的主要表达式在&#39;]之前令牌。我不知道如何纠正它。有人能帮我吗?提前谢谢。
答案 0 :(得分:0)
这对我来说有点困惑,你的代码甚至没有编译,你有分段错误。怎么样?
无论如何改变这个
exch (arr[]);
到
exch (arr);
在访问无法访问的无效内存或内存时,通常会出现分段错误,这只有在执行成功编译代码后的代码时才会发生。
答案 1 :(得分:0)
我可以从你的问题中理解你想要反转数组。
在代码中的while循环中,您尝试访问索引为-1的arr_exch数组,这会导致分段错误。
您可以尝试以下正常运行的代码。
#include <iostream>
const int length = 3;
// exch1() is another way for reversing a array.
void exch1(int arr_exch[]) {
for (int i = 0; i < length/2; i++) {
int temp = arr_exch[i];
arr_exch[i] = arr_exch[length - i - 1];
arr_exch[length - i - 1] = temp;
}
}
void exch(int arr_exch[]){
int tmp = 0;
int s = 0;
int e = length - 1;
while (e > s){
tmp = arr_exch[s];
arr_exch[s] = arr_exch[e];
arr_exch[e] = tmp;
s = s + 1;
e = e - 1;
}
}
int main()
{
int arr[length];
std::cout << "enter "<< length <<" integers:\n";
for (int counter = 0; counter < length; counter++){
std::cin >> arr[counter];
}
exch(arr); //**<--- here the error "expected primary expression before ']' token.**
for (int counter = 0; counter < length; counter++){
std::cout << arr[counter] << "\t";
}
return 0;
}