數組參數的sizeof

如下代碼中,把數組作爲函數參數時,函數中需要計算數組大小:

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));
}
發佈了116 篇原創文章 · 獲贊 49 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章