需要帮助了解以下C 代码
Need help in understanding the below c++ code
#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 int
s。
让我们采用更简单的功能。
void foo(int& ref) { }
您可以用
调用它int i = 20;
foo(i);
在此,对变量i
传递给该函数的引用。您可以在foo
中访问CC_5中的变量i
的值。您对foo
中ref
进行的任何更改将在调用功能中可见。
同样,您的功能引用了一个类型为" 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;
}
上述功能将与不同对象类型和尺寸的数组一起使用。
相关文章:
- 了解每月第一天函数的代码
- 您好,我实际上想了解以下代码.有人可以详细说明代码它到底在做什么吗?为什么它会在第 31 行崩溃
- 试图了解如何将C++对转换为 C 代码
- 了解 DCL60-CPP 中的不合规代码示例:遵守单一定义规则
- 了解现代OpenGL中的代码绘图.OBJ并设置不同的位置
- 试图在C 中了解哈希表代码
- 了解我的代码中的意外行为
- 了解 CSAPP 中的以下汇编代码
- 了解C++代码 - "Get the number of digits in an int"
- 需要帮助了解以下C 代码
- 根据您的.h或.hpp文件中的代码,有人可以了解您的应用程序
- 了解代码
- 使用'new'和指针了解C++代码
- 了解图像处理代码
- 了解 Windows 中代码块的 g++ 版本
- 了解C++代码
- 请帮助我理解上述代码行为。了解 void 指针和双 void 指针操作
- 是否可以使用带有错误代码的OpenProcess ERROR_ACCESS_DENIED来了解进程是否存在
- 了解 Webkit 中使用的 c++ 模板代码
- C 样式转换是添加程序集(代码)还是仅供编译器了解情况