void quickSort(int a[],int s,int e){
if(s>e){
return;
}
int pivot = parti(a,s,e);
cout<<"size "<<sizeof(a)<<endl;
当我将数组作为参数传递给函数时,大小超过4的数组被视为大小为4的数组。为什么会这样?
答案 0 :(得分:0)
您不能“将数组传递给函数”。它看起来像你可以,但你不能。
此:
void quickSort(int a[],int s, int e)
实际上是:
void quickSort(int* a,int s, int e)
而且,在你的系统上,指针的大小显然是四个字节。
这就是为什么我们不会使用sizeof
来确定原生数组的大小,因为它很容易意外地取代其他东西的大小。
答案 1 :(得分:0)
Array-to-pointer decay(将数组作为函数参数传递)。它表示您传递给quickSort
的任何数组,sizeof(a)
将始终返回指向int的指针的大小。