需要帮助了解以下C 代码

Need help in understanding the below c++ code

本文关键字:代码 了解 帮助      更新时间:2023-10-16
#include<iostream>
using namespace std;
int number(int (&a)[10])
{
    int n= sizeof(a)/sizeof(a[0]);
    return n;
}
int main()
{
    int n;
    cout << " Enter the number of elements ";
    cin >> n;
    int a[10];
    cout << "Enter array elements : ";
    for(int i=0;i<n;i++)
        cin>>a[i];
    cout<<" The number of elements according to main is "<< sizeof(a)/sizeof(a[0])<<endl;
    cout<<"  The number of elements in the function number is " << number(a);
}

在主函数"数字(a)"中的上述代码中,我们到底是什么以及该方法所采用的内容。代码如何在函数中起作用。如果我们不使用"&amp;",该怎么办数字函数中的符号。

我的理解是,我们正在将第一个元素的指针传递到函数中,但我不正确。

呼叫number(a)时,您正在传递对10 ints。

的数组的引用

让我们采用更简单的功能。

void foo(int& ref) { }

您可以用

调用它
int i = 20;
foo(i);

在此,对变量i传递给该函数的引用。您可以在foo中访问CC_5中的变量i的值。您对fooref进行的任何更改将在调用功能中可见。

同样,您的功能引用了一个类型为" 10 int s的数组"的变量。该功能与参考的唯一一件事是计算数组的元素数量。

它使用了一些冗余逻辑。您可以将该功能简化为:

int number(int (&a)[10])
{
    return 10;
}

该功能在可以使用的功能方面受到限制。如果您有float类型或具有20个元素的数组,则无效。您可以创建一个模板功能以使其更一般。

template <typename T, size_t N>
size_t number(T (&arr)[N])
{
   return N;
}

上述功能将与不同对象类型和尺寸的数组一起使用。