c++ - 在参数中指定数组大小有什么作用吗?

标签 c++

在参数中指定数组的大小有什么影响吗?例如。

void SetIDs(int IDs[22] );

对比

void SetIDs (int IDs[] );

它什么都不做吗?

最佳答案

不,如果按值传递,参数中的数组类型说明符总是调整为指针。

void SetIDs (int IDs[22] );

void SetIDs (int IDs[] );

void SetIDs (int *IDs );

都产生相同的代码。即使是 SetIDs 中的 sizeof IDs 也只会返回指针的大小,就好像 IDs 被声明为 int *IDs 一样。

当您通过引用传递或具有多维数组时,数组大小变得相关:

void SetIDs (int (&IDs)[22] );

此 SetID 将只接受(引用)大小为 22 的 int 数组。

void SetIDs (int IDs[22][42] );
// equivalent to
void SetIDs (int (*IDs)[42]);

此 SetID 将接受指向大小为 42 的 int 数组(或数组)的指针。

关于c++ - 在参数中指定数组大小有什么作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32575810/

相关文章:

C++ 隐式转换不起作用

c++ - 创建 vector 时的默认值,C++

c++ - OpenMP:减少和共享

c++ - 如何展开模板特化

c++ - 为什么 omp 并行部分中的线程不按其部分划分?

c++ - 为什么我的Magic Square算法只能找到一半可能的解决方案?

c++ - 如何避免不明确的模板实例化?

c++ - 指针共享习语

c++ - 检查 Windows 中的 C++ 版本

c++ - Visual C++ 似乎无法解析链接头文件的路径