如下代碼中,把數組作爲函數參數時,函數中需要計算數組大小:
void copy(int a[],int b[])
{
memcpy(b,a,sizeof(a));
}
這段代碼的本意是將a中的所有字符拷貝到B中,但運行時會發現不能得到正確結果。因爲當數組作爲形參時,在函數內退化爲指針,因此sizeof(a)返回的是指針的大小,而不是數組a的大小。正確的做法將數組的引用作爲參數:
void copy(int (&a)[],int b[])
{
memcpy(b,a,sizeof(a));
}