我正在做一個測試和在線測試引擎顯示分段錯誤,這是混亂,因爲沒有進一步的細節,我檢查指針沒有NULL,他們工作得很好,但不要如何陣列在這裏工作。因爲在調試時,一切都很好,直到我試圖打印出數組。它的報道是在這裏被粉碎並破碎。如果它破裂,我什麼都不能做,而我打破或繼續。如果我繼續,它運行得很好。所以我非常困惑。反轉動態分配數組的程序中的分段錯誤
我的電腦是windows 7,我在visual studio 2010 C++中運行代碼。 調試不是很清楚解決問題,而且我學習C++的效率不高。 用解決數組需要動態分配。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
void reverseArray(int size, int num[]) {
if(size>1) {
int *p = &num[size-1];
int *f = num;
for(int i = 0;i < size/2; i++){
swap(*p, *f);
p--;
f++;
}
}
}
int main() {
int len;
int a[len];/This is the bug, can't use uninitialized var assign array/
cin >> len;
for(int i = 0; i < len; i++){
cin >> a[i];
}
reverseArray(len, a);
for(int i = 0; i < len; i++){
cout << a[i] << " ";
}
return 0;
}
這有一些與動態分配,當我在java工作,我創建一個新的數組。 我不得不
int[] newArray = {2,4,1,2,3};
或
int[] newArray = new int[] {2,4,1,2,3};
最後,這個問題就解決了,這讓我很高興。 閱讀和學習非常重要,編碼也很重要。 謝謝大家,
並使用載體而不是使用數組。 這會更容易。
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std;
int main() {
int a;
int len;
vector<int> myvector;
cin >> len;
for(int i = 0; i < len; i++){
cin >> a;
myvector.push_back(a);
}
reverse(myvector.begin(), myvector.end());
for(int i = 0; i < len; i++){
cout << myvector[i] << " ";
}
return 0;
}
使用陣列再次(我懷疑下面的代碼):
#include<iostream>
//#include<cstdlib>
using namespace std;
void reverseArray(int size, int nums[]){
if(size > 1){
int *p = &nums[size-1];
int *q = nums;
for(int i = 0; i< size/2; i++){
swap(*p, *q);
p--;
q++;
}
}
}
int main(){
int len;
cin >> len;
int *a = new int[len];//a point to the first ele.
for(int i = 0; i< len; i++){
cin >> a[i];
}
reverseArray(len, a);
for(int i = 0; i < len; i++){
cout << a[i] << " ";
}
delete [] a;
return 0;
}
它完美對我的筆記本電腦,這是令人困惑,因爲一個是指針,我卻用它像一個陣列。它不應該工作......
最終陣列版本: http://ideone.com/ZMsD35 完成完成。
#include<iostream>
using namespace std;
int main(){
int len;
cin >> len;
int *a = new int[len];
for(int i = 0; i< len; i++){
cin >> a[i];
}
reverse(a, a+len);
for(int i = 0; i< len; i++){
cout << a[i];
}
delete [] a;
system("pause");
return 0;
}
評論不適合廣泛的討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/129268/discussion-on-question-by-r-mia-segmentation-fault-in-a-program-that-reverses-一個)。 –