误用指针会产生分段错误。我仍然不确定如何纠正它



读了一会儿之后,我觉得我明白这里出了什么问题,但我不知道如何解决。据我了解,问题在于我如何在第 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知道自己的大小(。

相关内容

  • 没有找到相关文章

最新更新