欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

初識C++(4)---C++入門-創(chuàng)新互聯(lián)

文章目錄
  • 內(nèi)聯(lián)函數(shù)
    • 概念
    • 特性
  • auto關鍵字
    • auto使用的一些規(guī)則
  • 基于范圍的for循環(huán)
    • 范圍for的語法
    • 范圍for的使用條件
  • 指針空值nullptr

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站設計、網(wǎng)站建設、鷹手營子網(wǎng)絡推廣、微信小程序定制開發(fā)、鷹手營子網(wǎng)絡營銷、鷹手營子企業(yè)策劃、鷹手營子品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供鷹手營子建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:chinadenli.net
內(nèi)聯(lián)函數(shù) 概念

以inline修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),在編譯的時候,

C++的編譯器會將內(nèi)聯(lián)函數(shù)展開在調(diào)用內(nèi)聯(lián)函數(shù)的地方

(不是無條件的展開,這取決于編譯器,后面有詳細分析),這沒有函數(shù)壓棧的開銷,

所以內(nèi)聯(lián)函數(shù)可以提升程序運行的效率。

特性

inline是一種以空間換時間的做法,雖然省去了函數(shù)調(diào)用的系統(tǒng)開銷,

但是展開代碼使得代碼量增加,所以,在代碼很長,或者有循環(huán)和遞歸的函數(shù)

就不適宜使用內(nèi)聯(lián)函數(shù)了,即使使用了編譯器也會判斷是否適合展開,

有的編譯器認為,代碼超過十行命令就是長代碼,就不會展開內(nèi)聯(lián)。

inline內(nèi)聯(lián)不建議將聲明和定義分離,分離之后會導致鏈接出現(xiàn)錯誤,

因為inline被展開之后,就沒有函數(shù)地址了,鏈接的時候會找不到函數(shù)地址。


auto關鍵字

auto關鍵字在C語言中沒有什么價值,

在C++11中,auto有了新的含義:

auto不再是一個存儲類型指示符,而是作為一個新的類型指示符來指示編譯器,

auto聲明的變量必須由編譯器在編譯時期推導而得。

說通俗一點就是,auto可以自動識別變量的類型,下面簡單的驗證一下

在這里插入圖片描述
需要注意的是:使用auto定義變量時必須對其進行初始化,

因為在編譯階段編譯器需要根據(jù)初始化的內(nèi)容來推導auto的類型是什么。

所以說,auto不是一種類型聲明,而是一個類型聲明的“占位符”,

編譯器編譯的時候就將auto替換成實際的類型。

auto使用的一些規(guī)則

auto可以和指針和引用結合使用,

auto定義指針類型時,用auto和auto*沒有任何區(qū)別,

但用auto聲明引用類型時則必須加&

當在同一行聲明多個變量時,這些變量必須是相同的類型,否則編譯器將會報錯,

因為編譯器實際只對第一個類型進行推導,然后用推導出來的類型定義其他變量。

在這里插入圖片描述

auto也不是所有的地方都可以使用,

auto不可以作為函數(shù)的參數(shù)

auto不可以用來聲明數(shù)組類型

auto的實際用法并不是簡單的像上面的使用,

當變量的類型名很長的時候就很適合用auto,還有其他的用法在后續(xù)的學習再了解。


基于范圍的for循環(huán) 范圍for的語法

對于一個有范圍的集合而言,由程序員來說明循環(huán)的范圍是多余的,有時候還會容易犯錯誤。

因此C++11中引入了基于范圍的for循環(huán)。

for循環(huán)后的括號由冒號“ :”分為兩部分:

第一部分是范圍內(nèi)用于迭代的變量,

第二部分則表示被迭代的范圍。

int main()
{//遍歷數(shù)組
	int arr[] = {1,2,3,4,5,6,7,8,9 };

	//平常做法
	for (int i = 0; i< sizeof(arr) / sizeof(int); i++)
	{cout<< arr[i]<< " ";
	}
	cout<< endl;
	//范圍for
	for (auto ret: arr)
	{cout<< ret<< " ";
	}
	return 0;
}

范圍for也和普通的循環(huán)類似,可以用continue結束本次循環(huán),用break跳出整個循環(huán)。

范圍for的使用條件

for循環(huán)迭代的范圍必須是確定的,

對于數(shù)組來說,就是數(shù)組中的第一個元素和最后一個元素。

對于類來說,就要提供確定開頭begin和結尾end的方法,[begin,end]就是循環(huán)迭代的范圍。


指針空值nullptr

在C語言中,對于指針的初始化,一般都是給NULL,

NULL實際是一個宏,在傳統(tǒng)的C頭文件(stddef.h)中,可以看到如下代碼:

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

這就是條件編譯的應用了,NULL定義為字面常量0,或者被定義為無類型指針(void*)的常量。

在C語言中使用NULL來對指針進行置空沒有任何問題,但是在C++中,可能會出現(xiàn)問題

在這里插入圖片描述
在這段代碼中,我想要調(diào)用的函數(shù)應該是指針的Func(),

但是NULL被定義成了0,所以就調(diào)用了別的函數(shù)。

在C++98中,字面常量0既可以是一個整形數(shù)字,也可以是無類型的指針(void*)常量,

但是編譯器默認情況下將其看成是一個整形常量,

如果要將其按照指針方式來使用,必須對其進行強制類型轉換(void *)0。

所以在C++中,指針的置空更推薦使用nullptr,

使用nullptr的時候不用包含頭文件,這是C++11的關鍵字,

在C++11中,sizeof(nullptr)與sizeof((void)0)所占的字節(jié)數(shù)相同

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站標題:初識C++(4)---C++入門-創(chuàng)新互聯(lián)
標題網(wǎng)址:http://chinadenli.net/article26/dejicg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、手機網(wǎng)站建設、Google、微信小程序、網(wǎng)站維護、品牌網(wǎng)站制作

廣告

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

成都定制網(wǎng)站建設