我打算将这段代码转换为快速排序的应用程序,但是我正在使用数组,自从发现向量并对其变坏以来,我还没有做过。这将导致我找到此代码。
int main() {
int numbers[] = { 6, 5, 1, 3, 8, 4, 7, 9, 2};
int* pivot; // will be used later when I implement quicksorting
int currentElement = numbers[0]; //will be used for quicksorting
std::cout<< "\n" << currentElement << "\n" << std::endl;
int *ptr = numbers;
for(int x = 0; x < sizeof(numbers); x++)
{
std::cout << "value at index: - " << x << " is: " << *(ptr + x) << std::endl;
}
return 0;
}
我收到此输出。
5
value at index: - 0 is: 6
value at index: - 1 is: 5
value at index: - 2 is: 1
value at index: - 3 is: 3
value at index: - 4 is: 8
value at index: - 5 is: 4
value at index: - 6 is: 7
value at index: - 7 is: 9
value at index: - 8 is: 2
value at index: - 9 is: -858993460
value at index: - 10 is: 1211635769
value at index: - 11 is: 5241484
value at index: - 12 is: 12658446
value at index: - 13 is: 1
value at index: - 14 is: 6877496
value at index: - 15 is: 6875200
value at index: - 16 is: 5241572
value at index: - 17 is: 12658033
value at index: - 18 is: 1211635877
value at index: - 19 is: 12652609
value at index: - 20 is: 12652609
value at index: - 21 is: 4116480
value at index: - 22 is: 0
value at index: - 23 is: 0
value at index: - 24 is: 0
value at index: - 25 is: 0
value at index: - 26 is: 0
value at index: - 27 is: 0
value at index: - 28 is: 0
value at index: - 29 is: 12694900
value at index: - 30 is: 12694912
value at index: - 31 is: 0
value at index: - 32 is: 5241492
value at index: - 33 is: 0
value at index: - 34 is: 5241664
value at index: - 35 is: 12665872
以退出代码0
我的主要问题是,为什么我会在index 8
之后的索引中获取值? (value 2
)
它们甚至如何存在?这是因为我在int numbers[]
处所做的声明没有指定的数组大小吗?首先要说明的原因是,我打算使用快速排序算法使用随机数生成器填充数组,本质上将数组视为向量。我知道这是非法的,但是我只是想重新学习数组,所以我对其他语言感到满意,因为向量在许多其他语言中都不存在。
我之所以得到这些幻像索引,是因为数组分配具有默认的内存块,如果未指定数组大小,或者它是已经隐式定义的,那么我将使用提供的值对数组进行手动填充在花括号中,也许导致指针继续?