在参数中指定数组的大小是否做任何事情?

时间:2015-09-15 00:23:13

标签: c++

在参数中指定数组的大小是否有效?例如。

void SetIDs(int IDs[22] );

void SetIDs (int IDs[] );

它什么都不做?

1 个答案:

答案 0 :(得分:2)

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

void SetIDs (int IDs[22] );

void SetIDs (int IDs[] );

void SetIDs (int *IDs );

都生成相同的代码。 SetIDs中的sizeof IDs只会返回指针的大小,就像ID被声明为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数组(或数组)的指针。