因此, 可以下結(jié)論了, 在匯編層面, 引用和指針是完全一樣的東西. 咱們的教科書上的說法僅僅是語言層面的, 編譯器的底層實(shí)現(xiàn)是有自己的邏輯的.
經(jīng)過試驗, 數(shù)組的引用是不能作為函數(shù)的參數(shù)的, 例子如下:
// 如果定義成如下這樣, 將不能通過編譯
void RefAsParam(int & aRR[])
{
printf("==== %d == %d ====\r\n", aRR[0], sizeof(aRR));
}甚至也不能定義成這樣:
void RefAsParam(int & aRR[10])
{
printf("==== %d == %d ====\r\n", aRR[0], sizeof(aRR));
}而只能定義成這樣:
void RefAsParam(int aRR[])
{
printf("==== %d == %d ====\r\n", aRR[0], sizeof(aRR));
}或者這樣 void RefAsParam(int aRR[10]), 但其中的sizeof(aRR) 的值等于4, 即一個指針的大小, 而不是 4*10=40 個字節(jié).
能通過編譯且sizeof(aRR)等于 40 的的代碼列出如下, 這定義的新類型定死了就是 10 個元素的數(shù)組, 相當(dāng)沒有靈活性.
相關(guān)推薦:
C++考試輔導(dǎo):內(nèi)存分配的五種方法的區(qū)別 2009年c++二級等考輔導(dǎo):char*和char[]的區(qū)別