在早期c/c++中auto的含義是:使用auto修飾的變數,是具有自動儲存器的區域性變數,但遺憾的是一直沒有人去使用它。
c++11中,標準委員會賦予了auto全新的含義:auto不再是乙個儲存型別指示符,而是作為乙個新的型別指示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得。
int
testauto()
intmain()
【注意】
使用auto定義變數時必須對其進行初始化,在編譯階段編譯器需要根據初始化表示式來推導auto的實際型別,因此auto並非是一種「型別」的宣告,而是乙個型別宣告時的「佔位符」,編譯器在編譯期會將auto替換為變數實際的型別。
auto的使用細則
1.auto與指標和引用結合起來使用
用auto宣告指標型別時,用auto和auto*沒有任何區別,但用auto宣告引用型別時則必須加&
int
main()
在同一行定義多個變數
當在同一行宣告多個變數時,這些變數必須時相同的型別,否則編譯器將會報錯,因為編譯器實際只對第乙個型別進行推導,然後用推導出來的型別定義其他變數。
void
testauto()
auto不能推導的場景
1.auto不能作為函式的引數
//此處**編譯失敗,auto不能作為形參型別,因為編譯器無法對a的實際型別進行推導
void
testauto
(auto a)
2.auto不能直接用來宣告陣列
void
testauto()
;auto b=
;}
3.為了避免與c++98中的auto發生混淆,c++11只保留了auto作為型別指示符的用法
4.auto在實際中最常見的優勢用法就是c++提供的新式for迴圈,還有lambda表示式等進行配合使用。
C 11新特性 auto關鍵字
熟悉指令碼語言的人都知道,很多指令碼語言都引入了 型別自動推斷 技術 比如python,可以直接宣告變數,在執行時進行型別檢查。隨著c 11標準的發布,c 語言也引入了型別自動推斷的功能,這就是我們今天要介紹的auto關鍵字。c 是一種強型別語言,宣告變數時必須明確指出其型別。但是,在實踐中,優勢我...
C 11新特性 auto關鍵字
在c 98標準中就存在著auto關鍵字,c 98標準中auto關鍵字用於自動變數的宣告,但在預設情況下即使不宣告auto,函式內部的變數也是具有自動儲存期的。因此由於使用極少且多餘,在c 11中已刪除這一用法。void fun c 11新標準引入了auto型別說明符,採用它可以讓編譯器幫助我們分析表...
C 11新特性 auto關鍵字
include include using namespace std template void add t t,u u int main templatet,class u auto add t t,u u decltype t u auto a 10 auto pa new auto a au...