目錄
一、auto簡介
二、auto的使用場景
三、注意事項(xiàng)
拓、范圍for
?【總結(jié)】
【源代碼】?
一、auto簡介
1.是什么?
? ? ? ? auto是一個(gè)提示符,提示編譯器根據(jù)變量的值來推導(dǎo)變量的類型。
????????在早期C/C++中auto的含義是:使用auto修飾的變量,是具有自動(dòng)存儲(chǔ)器的局部變量,C++11中,標(biāo)準(zhǔn)委員會(huì)賦予了auto全新的含義即:auto不再是一個(gè)存儲(chǔ)類型指示符,而是作為一個(gè)新的類型指示符來指示編譯器,auto聲明的變量必須由編譯器在編譯時(shí)期推導(dǎo)而得。
2.為什么?
? ? ? ? 對(duì)于某些較長或較奇怪的數(shù)據(jù)類型,可交給編譯器自行推導(dǎo),這樣使代碼更簡潔。
3.怎么用?
? ? ? ? 定義變量使用auto可讓編譯器自動(dòng)推導(dǎo)變量類型;和范圍for使用來遍歷數(shù)組;加引用和范圍for一起使用來修改數(shù)值。
? ? ? ? 使用auto定義變量時(shí)必須初始化,auto變量無法作為參數(shù)。在編譯階段編譯器需要根據(jù)初始化表達(dá)式來推導(dǎo)auto的實(shí)際類型。因此auto并非是一種“類型”的聲明,而是一個(gè)類型聲明時(shí)的“占位符”,編譯器在編譯期會(huì)將auto替換為變量實(shí)際的類型。
二、auto的使用場景
1. 使用auto自動(dòng)識(shí)別變量類型
eg. auto自動(dòng)識(shí)別變量類型
eg. 當(dāng)變量類型比較長時(shí),auto自動(dòng)識(shí)別變量類型,使代碼變得簡潔。![]()
2. auto關(guān)鍵字經(jīng)常和范圍for一起使用,用來遍歷數(shù)組。
注意,這里是將數(shù)組中的元素賦值給i,所以i的改變并不會(huì)影響原數(shù)組。
3.?auto結(jié)合引用和范圍for一起使用,用來修改數(shù)組。
三、注意事項(xiàng)
1.使用auto聲明變量必須初始化。
2.不能使用auto和指針結(jié)合來修改數(shù)組。
?????????auto* a 加一個(gè) * 是在強(qiáng)調(diào)變量 a 是指針,故a只能接受指針類型,并不是將變量類型改為指針類型,沒有指針auto類型。
eg. auto* 只能接收指針類型。
eg. auto* aa 并沒有使 變量aa的類型變?yōu)閕nt **。
可使用操作符typeid(a).name()來查看變量a的數(shù)據(jù)類型。(注意typeid不是函數(shù))
3.同理,auto& b 是在強(qiáng)調(diào)b是引用,但引用可以除了可以接收引用,還可以接收其它類型,故b除了可以接收引用外還可以接收其它類型(int, double……),說明b是該類型變量的引用。
4.同句中的auto的類型必須相同。
5.auto不能作為參數(shù)。
?
拓、范圍for
1. 是什么?
????????范圍for全稱基于范圍的for循環(huán),是C++11中引入的一種新特性,它允許程序員更簡潔地遍歷序列(如數(shù)組、字符串等)中的元素。
2. 為什么?
????????對(duì)于一個(gè)有范圍的集合而言,由程序員來說明循環(huán)的范圍是多余的,有時(shí)候還會(huì)容易犯錯(cuò)誤,因此 C++11 中引入了基于范圍的for循環(huán)。
3. 怎么用?
????????for 循環(huán)后的括號(hào)由冒號(hào)“?:”分為兩部分:第一部分是范圍內(nèi)用于迭代的變量,第二部分則表示被迭代的范圍。
4. 注意事項(xiàng):
a)?范圍for的范圍必須是確定的:
?【總結(jié)】
【源代碼】?
#include<iostream>
using std::cout;
using std::endl;
int main()
{
//auto a = 1;
//auto b = 3.14;
//auto c = "a";
//auto d = 'a';
1.auto自動(dòng)識(shí)別類型
//cout << typeid(a).name() << endl; //typeid()識(shí)別變量類型
//cout << typeid(b).name() << endl;
//cout << typeid(c).name() << endl;
//cout << typeid(d).name() << endl;
2.auto關(guān)鍵字經(jīng)常和范圍for一起使用,用來遍歷數(shù)組。
普通的遍歷數(shù)組
//int arr[] = { 0,1,2,3,4,5,6 };
//for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i)
// cout << arr[i] << " ";
//cout << endl;
范圍for:自動(dòng)迭代,自動(dòng)結(jié)束
依次取arr中的元素,賦值給變量i(注意i是arr中元素的拷貝)
//for (auto i : arr)
// cout << i << ' ';
//cout << endl;
//注意: auto* a 是在強(qiáng)調(diào)a是指針類型,強(qiáng)調(diào)a只能接收指針類型。
/*int i = 0;
int* ip = &i;
auto a = i;
///auto* aa = i; //auto* 只能接收指針類型
auto* aa = ip;
auto b = ip;
cout << typeid(aa).name() << endl;
cout << typeid(b).name() << endl;*/
//3.auto結(jié)合引用和范圍for一起使用,用來修改數(shù)組。
int arr[] = { 1, 2, 3, 4, 5, 6 };
for (auto a1 : arr)
{
cout << a1 << ' ';
}
cout << endl;
for (auto& i : arr)
{
++i;
}
for (auto a2 : arr)
{
cout << a2 << ' ';
}
cout << endl;
//注意:使用auto聲明變量必須初始化
//auto a;
return 0;
}
//6.范圍for的范圍必須是確定的。
//void test(int a[])
//{
// for (auto i : a)
// {
// cout << i << endl;
// }
//}
------------------------END-------------------------文章來源:http://www.zghlxwxcb.cn/news/detail-720030.html
才疏學(xué)淺,謬誤難免,歡迎各位批評(píng)指正。文章來源地址http://www.zghlxwxcb.cn/news/detail-720030.html
到了這里,關(guān)于C++ 入門篇(八) auto關(guān)鍵字的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!