以下函数的输出是"int*",这意味着形式参数被转换为整数指针.这个设计有什么必要的原因吗?为什么我们不能保留数组类型?
// the output is "int *"
#include<typeinfo>
void Func(int ar[5])
{
printf("%s\n", typeid(ar).name();
}
int main()
{
int ar[5];
Func(ar);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个设计有什么必要的原因吗?
这是从推测C.历史行李1,这是方便,因为你不能按值反正传递数组.
如果要保留类型,可以使用引用或指针:
void Func(int (&ar)[5]);
Run Code Online (Sandbox Code Playgroud)
或者使用模板函数来接受任意大小的数组:
template<std::size_t N> void Func(int (&ar)[N]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |