C C 中的臨時變數

2021-04-12 21:58:56 字數 666 閱讀 5324

說到臨時變數,我們大家也許都挺熟悉, 但是我自己對臨時變數的理解卻一直存在乙個誤區。通常情況下,我會把為了做某一件事情而臨時建立的乙個變數叫做臨時變數。比如說在交換兩個變數的值時,通常我們會建立第三個變數來達到我們最終的目的,而我們稱之為「臨時變數」。然而,大師scott meyers告訴我們,事實不是這麼簡單!

臨時變數通常在函式引數傳遞發生型別轉換以及函式返回值時被建立。比如下面這個例子:

void uppercasify(const string& str)

{}int main(int argc, char* argv)

函式uppercasify需要const string&型別的引數,而實參型別為char *,故編譯器會嘗試著進行型別轉換。此時乙個string型別的臨時變數將被建立,並用subtlebookplug來初始化物件,最後將臨時變數傳給函式uppercasify。

理解了這個例子,也就能較好的理解為什麼c/c++不允許為非const的引用型別建立臨時變數了。比如下面這個例子:

void uppercasify(string& str)  // 引數型別改為string &

{}int main(int argc, char* argv)

此時,如果建立了乙個臨時變數,那函式所修改的物件為臨時變數,而不是使用者所期待的subtlebookplug了,從而容易引起誤操作。

C C 中的自動變數

預設情況下,宣告在塊或函式頭中的任何變數都屬於自動儲存類別。為了更清楚地 表達你的意圖 例如,為了表明有意覆蓋乙個外部變數定義,或者強調不要把該變數改為其他儲存類別 可以顯式使用關鍵字auto,如下所示 int main void 關鍵字auto是儲存類別說明符 storage class spec...

程式設計中臨時變數的使用 20175204

提交 編譯執行沒有問題後,git add git commit m 陣列元素刪除,插入 git push 提交碼雲上你完成的 的鏈結。任務 定義乙個陣列,比如 int arr 列印原始陣列的值 for int i arr system.out.println 新增 刪除上面陣列中的5 列印出 1 2...

程式設計中臨時變數的使用 20175225

提交 編譯執行沒有問題後,git add git commit m 陣列元素刪除,插入 git push 提交碼雲上你完成的 的鏈結。任務 定義乙個陣列,比如 int arr 列印原始陣列的值 for int i arr system.out.println 新增 刪除上面陣列中的5 列印出 1 2...