【问题标题】:Passing an array to the function in C++ and finding size [duplicate]将数组传递给C ++中的函数并查找大小[重复]
【发布时间】:2015-10-19 13:47:35
【问题描述】:

我对如何将数组传递给函数感到困惑。在这段代码中..

#include <iostream>

using namespace std;

void func(int arr[])
{
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << n << endl;
}

int main()
{
    int arr[] = {3,6,2,4,7,9,5,1};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << n << endl;
    func(arr);
    return 0;
}

我得到的输出是

8

1

谁能解释一下为什么会这样?

【问题讨论】:

  • “我对如何将数组传递给函数感到困惑。” 我并不感到惊讶! 不是。

标签: c++ arrays


【解决方案1】:

当一个数组被传递给一个函数时,它会自动衰减为一个指针。尽管您将int arr[] 写为参数,但arr 是一个指针,sizeof(arr) 产生sizeof(T*)。取消引用int* 会产生int。在你的机器上int*int 恰好有相同的大小,所以sizeof(int*) / sizeof(int) == 1

【讨论】:

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