【问题标题】:size of array passed to function [duplicate]传递给函数的数组大小[重复]
【发布时间】:2016-07-02 13:45:51
【问题描述】:
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 的数组。为什么会这样?

【问题讨论】:

  • @tkausl:这不是原因。

标签: c++ arrays


【解决方案1】:

您不能“将数组传递给函数”。看起来你可以,但你不能。

这个:

void quickSort(int a[],int s, int e)

其实是:

void quickSort(int* a,int s, int e)

而且,在您的系统上,指针的大小显然是四个字节。

这就是为什么我们不应该使用sizeof 来确定原生数组的大小,因为很容易意外地取而代之的是其他东西的大小。

【讨论】:

【解决方案2】:

Array-to-pointer decay 发生在这里(将数组作为函数参数传递)。这意味着您传递给quickSortsizeof(a) 的任何数组都将始终返回指向 int 的指针的大小。

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 2014-10-27
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多