[英]Misuse of a pointer is producing a segmentation fault. I'm still not sure how to correct it though
做了一些閱讀之后,我覺得我明白這里出了什么問題,但我不知道如何解決它。 據我了解,問題在於我如何在第 4 行(強調)中編寫數組的輸入。 問題本身是,當我第一次在任何 IDE 中運行代碼時,它工作正常,但是當我嘗試處理數字時,它會將新數組視為與第一個數組共享大小,即使當它沒有。 似乎我應該以某種替代方式重寫第 4 行,以免濫用指針,但我不確定如何。
using namespace std;
void INSERTIONSORT(int* A) { //THIS IS LINE 4
int i;
int key;
for (int j = 0; j < sizeof(A); j++) {
key = A[j];
i = j - 1;
while (i >= 0 && A[i] > key) {
A[i + 1] = A[i];
i = i - 1;
}
A[i + 1] = key;
}
}
void display(int* A) {
for (int i = 0; i <= sizeof(A)-1; i++)
cout << A[i] << " ";
cout << endl;
}
int main() {
int myArray[] = { 2,1,4,3 };
cout << "Array before Sorting: ";
display(myArray);
INSERTIONSORT(myArray);
cout << "Array after Sorting: ";
display(myArray);
return 0;
}```
這條線是問題所在:
for (int j = 0; j < sizeof(A); j++) {
您需要的是數組的大小(元素的數量),得到的是指針的大小(以字節為單位)(= 4,對於 32 位系統),通常您希望顯式傳遞數組大小或使用一些一種知道自己大小的容器( std::vector
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.