在参数中指定数组的大小是否有效?例如。
void SetIDs(int IDs[22] );
与
void SetIDs (int IDs[] );
它什么都不做?
答案 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数组(或数组)的指针。