c 之引用拓展篇

2021-10-02 21:51:04 字數 1129 閱讀 3638

引入:我們先看一下下面這種常見的新手錯誤

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...