關鍵字auto,基於範圍的for迴圈

2021-10-23 22:14:23 字數 1603 閱讀 3580

在早期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物件和變數被儲存在棧中,它的生命週期...