欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C語言中auto怎么用

這篇文章主要為大家展示了“C語言中auto怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C語言中auto怎么用”這篇文章吧。

創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)龍南,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

你以為我說的自動變量類型auto嗎?非也,我們知道C語言中其實也有auto關(guān)鍵字,它和早期C++中的auto關(guān)鍵字一樣,它修飾局部變量,表示自動存儲期,不過由于默認就是這種,因此我們其實常常見不到這樣的寫法:

auto int a =10;

本文要介紹的并不是上面的auto,而是C++11中引入的auto關(guān)鍵字。

C語言中auto怎么用

效果

看看下面的代碼:

#include<iostream>#include<vector> int main() {     std::vector<int> vec{1,2,3,4,5};     for(std::vector<int>::const_iterator it = vec.begin();it != vec.end();++it)     {         std::cout<<*it<<std::endl;     }     return 0; }

對于it的類型,你自己能快速寫出來嗎?我反正是寫不出來。

再看auto版本:

#include<iostream> #include<vector> int main() {     std::vector<int> vec{1,2,3,4,5};     for(auto it = vec.begin();it != vec.end();++it)     {         std::cout<<*it<<std::endl;     }     return 0; }

是不是簡潔了許多?

沒錯,今天就是介紹自動類型推導(dǎo)關(guān)鍵字auto。

auto的作用

說實在的,程序員有時候就是“懶”,可能連個表達式的類型都不想寫,auto就是這樣一個關(guān)鍵字,它讓編譯器替我們?nèi)シ治霰磉_式的類型。

當然了,分析的前提是auto定義的變量有初值,如果連值都沒有,怎么可能知道它是什么類型?

auto用法

(1) 普通類型推導(dǎo)

例如:

auto i = 10;//i為int類型 auto d = 10.2//d 為double類型 auto f = 10.2f//f為float類型

(2) const關(guān)鍵字修飾的類型推導(dǎo)

通常auto會忽略掉頂層const(本身是常量,如int *cosnt p),而會保留底層const(指向的對象是常量,如const int*  p)。

舉個例子頂層const的例子:

const int ci = 10; auto aci = ci;//忽略頂層const,推導(dǎo)ci是int,所以aci類型是int const auto ca = ci//推導(dǎo)ci是int,但是前面有const,所以ca是const int

再說一個底層const的例子:

const int arr[] = {11}; auto p = arr;//arr 是const int *,這是底層const,推導(dǎo)后,保留底層const,所以p是 const int*

arr數(shù)組名被當成指針是,是const int*類型,或者說是int  const*,它指向的對象是只讀的,因此是底層const,保留,最終p的類型也是int const *。

當然auto還可以設(shè)置引用類型,例如:

const int ci = 10; auto &cp = ci;//cp是一個整型常量引

如果是字面值,則必須加上const:

const auto &ref = 10;//10是字面值,常量引用才能綁定字面值

想一想

想想下面推導(dǎo)的size類型是什么?

std::vector<int> vec; auto size = vec.size();

沒錯,它是std::vector::size_type。

要你寫下來你肯定不愿意。

不過下面這樣是沒法推導(dǎo)的奧:

vector<string> aa;    //vector<string> bb = aa;//無法推導(dǎo)出模板類型

下面這段程序幫你查看真正類型的名稱,僅供參考:

#include <iostream>#include <vector> #include <cxxabi.h> #include <typeinfo> int main() {     int     status;     char   *realname;     auto type = 1.1;     realname = abi::__cxa_demangle(typeid(type).name(), 0, 0, &status);     std::cout << typeid(type).name() << " => " << realname <<std::endl;     free(realname);     return 0; }

輸出結(jié)果:

double

總結(jié)

乍一看,好像挺簡單的那么一回事,不過使用auto最好注意類型推導(dǎo)規(guī)則,不是很明確的規(guī)則不建議以代碼可讀性為代價而簡化代碼。

當然了,它也有以下特點:

  • 可能使得代碼可讀性差

  • 某些情況auto得到的類型可能不是你想要的

因此一定要合理使用。

以上是“C語言中auto怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文題目:C語言中auto怎么用
網(wǎng)頁鏈接:http://aaarwkj.com/article38/phogpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航搜索引擎優(yōu)化、關(guān)鍵詞優(yōu)化營銷型網(wǎng)站建設(shè)、外貿(mào)建站、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
搡老熟女老女人一区二区| 亚洲成人午夜激情的三级网| 午夜福利片在线观看视频| 日韩精品一区二区91| 人人爽人人妻人人澡| 手机av在线 中文字幕| 欧美丝袜熟女日韩亚洲| 91手机精品在线视频| 国产成人久久精品二区三区| 国产视频在线一区二区| 亚洲天堂成人av蜜臀| 色哟哟在线观看国产精品| 亚洲av色网在线观看| 韩国黄色理论片一区二区麻豆| 中文字幕成人免费看片| 欧美乱与老熟妇视频观看| 国产精品国产亚洲精品| 亚洲欧美综合精品二区| 精品三级黄色国产片| 国语自产精品视频在线不卡| 久久精品人妻少妇一区二区| 亚洲欧美精品一区二区三区| 自拍国语对白在线视频| 中文字幕一区日韩欧美| 日木av中文字幕女女同性| 国产三级黄色片免费看| 国产日韩欧美一区二区丝袜| 日韩精品一区二区三区四区蜜桃| 成人黄网站色大片免费| 91蜜臀视频在线播放| 欧美性生活真实的视频| 日日躁夜夜躁久久狠狠躁| 亚洲理论在线观看电影| 成人夜间视频在线观看| 日韩性生活视频免费播放 | 亚洲国产精品一区二区电影| 国产综合一区二区三区视频| 黄色片在线观看中文字幕| 免费观看黄片视频在线播放| 日韩欧美国产亚洲在线| 亚洲人成免费在线观看|