传递给函数的数组大小

时间:2016-07-02 13:45:51

标签: c++ arrays

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的数组。为什么会这样?

2 个答案:

答案 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的指针的大小。