引入:我們先看一下下面這種常見的新手錯誤
int sum(int arr[5])
; cout << sizeof(arr) << endl;; //這是第乙個區別
for (int i = 0; i < 5; i++)sum += arr[i];
return sum;
}int main()
; //上面改為句改為這句竟然也不出現問題!!!!敲黑板,自己想
// int a[10];
cout << sum(a);
}
結果:
再看一下陣列引用:
int sum(int(&arr)[5]) //圓括號必須有
; cout << sizeof(arr) << endl;;
for (int i = 0; i < 5; i++)sum += arr[i];
return sum;
}int main()
; //上面改為句改為這句連編譯都過不去,安全可靠
// int a[10];
cout << sum(a);
}
結果:
總結:雖然算出來的結果都是對的,可是細節和安全性確實大相徑庭,並且發現sizeof的結果也是意外的不一樣。第乙個僅僅是列印了指標的大小為4個位元組,而第二個是真正的列印了陣列的大小為5個int的20個位元組。所以若有需要的情況下可以使用陣列引用
引入:
這裡簡單說一下左值和右值的區別(自己的理解哈!!大神勿噴):
至於一般課堂上說的=號左邊是左值,右邊是右值,明顯是不正確的概念!!!
反例如下:
int a[5];
*(a+3) = 5; //這裡的a+3就是右值
右值引用的使用形式:
int a=200;
int&b=a; //引用
int && c=a+b; //右值引用
C 篇之命名空間與引用
命名空間 using namespace std 使用標準的命名空間,命名空間是用來解決全域性變數的命名衝突的問題。這裡寫 片 include using namespace std 使用標準的命名空間 namespace one namespace two int main int arg,cha...
Python爬蟲拓展篇
以上內容,不要求全部掌握,但是掌握的越多,那麼你的重要性就越高 二 關於python面試的四點,你做到就萬事大吉了!因為面試的是python爬蟲崗位,面試官大多數會考察面試者的基礎的python知識,包括但不限於 0 python2.x與python3.x的區別 1 python的裝飾器 2 pyt...
iOS開發拓展篇 藍芽之GameKit使用
初始化鏈結藍芽控制器 gkpeerpickercontroller peerctr gkpeerpickercontroller alloc init 顯示匹配到的藍芽裝置 peerctr show 鏈結成功 param picker 藍芽控制器 param peerid 連線藍芽的裝置id par...