在早期c/c++中auto的含義是:使用auto修飾的變數,是具有自動儲存器的區域性變數
c++11中,標準委員會賦予了auto全新的含義即:auto不再是乙個儲存型別指示符,而是作為乙個新的型別指示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得
int
testauto()
intmain()
【注意】auto的使用細則:使用auto定義變數時必須對其進行初始化,在編譯階段編譯器需要根據初始化表示式來推導auto的實際類
型。因此auto並非是一種「型別」的宣告,而是乙個型別宣告時的「佔位符」,編譯器在編譯期會將auto替換為
變數實際的型別
void
testauto()
auto不能推導的場景:
// 此處**編譯失敗,auto不能作為形參型別,因為編譯器無法對a的實際型別進行推導
void
testauto
(auto a)
void
testauto()
;auto b=
;}
範圍for的語法
在c++98中如果要遍歷乙個陣列,可以按照以下方式進行:
void
testfor()
;for
(int i =
0; i <
sizeof
(array)
/sizeof
(array[0]
);++i)
array[i]*=
2;for(
int* p = array; p < array +
sizeof
(array)
/sizeof
(array[0]
);++p)
cout <<
*p << endl;
}
c++11中引入了基於範圍的for迴圈:for迴圈後的括號由冒號「 :」分為兩部分:第一部分是範圍內用於迭代的變數,第二部分則表示被迭代的範圍
void
testfor()
;for
(auto
& e : array)
e *=2
;for
(auto e : array)
cout << e <<
" ";
return0;
}
注意:與普通迴圈類似,可以用continue來結束本次迴圈,也可以用break來跳出整個迴圈範圍for的使用條件
void
testfor
(int array)
關於C 中的auto關鍵字,基於範圍的for迴圈
關於auto關鍵字的簡介 在早期的c c 中的auto含義是使用auto修飾的變數,是具有自動儲存器的區域性變數。在c 11中,賦予了auto全新的含義,也就是auto不再是乙個儲存型別指示符,而是作為乙個新的型別指示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得。來看一段 接下來...
auto關鍵字 decltype關鍵字
自動型別推斷 1 使用auto關鍵字的變數必須有初始值。在定義的時候進行初始化 2 函式引數和模板引數不能被宣告為auto。3 使用auto關鍵字進行型別推導時,如果初始化表示式是引用型別,編譯器會去除引用,除非顯示宣告 4 使用auto使用auto關鍵字進行型別推導時,編譯器會自動忽略頂層cons...
auto關鍵字使用
auto型別變數 根據初始值推斷真實的資料型別。有些時候並不能很確定乙個變數應該具備的資料型別,例如 將乙個複雜表示式的值賦給某個變數,此時並不能很明顯的確定這個值所具備的資料型別。此時auto關鍵字可以派上用場。auto儲存型別說明符宣告了乙個自動變數,auto物件和變數被儲存在棧中,它的生命週期...