最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C++ 數(shù)組

2023-03-24 22:39 作者:S-a-i_  | 我要投稿

數(shù)組和vector比較類似,也是存放相同類型的對象的容器,與vector不同的是,數(shù)組的大小確定不變。

數(shù)組的維度必須是常量表達式。

字符數(shù)組需要注意

數(shù)組不存在以下的拷貝操作

注意有些編譯器支持數(shù)組賦值的操作,這就是所謂的編譯器擴展,但是還是盡力避免非標準特性。



復雜數(shù)組的聲明

理解數(shù)組的含義可以從內(nèi)向外閱讀。例如Parray是一個指針,他指向大小為10的數(shù)組,最后他是int型。



訪問數(shù)組元素

使用數(shù)組下標的時候,通常將其定義為size_t類型,這是一種和機器相關(guān)的無符號類型,在cstddef頭文件中(也是c語言的stddef.h頭文件中)。

范圍for也可以遍歷數(shù)組但是會遍歷出所有的數(shù)據(jù)。



指針和數(shù)組

取址符可以用于任何對象面對數(shù)組使用下標運算得到該數(shù)組指定位置的元素,因此和其他對象一樣,對數(shù)組的元素使用取址符就能得到該元素的指針。

數(shù)組還有一個特性在很多用到數(shù)組的地方,編譯器都會自動地將其轉(zhuǎn)換為一個指向數(shù)組首元素的指針。

由上可知,很多對數(shù)組的操作實際上是對指針的操作,如果我們使用數(shù)組作為auto變量的初始值時,推斷得到的時指針而不是數(shù)組

這是因為實際上編譯器執(zhí)行的初始化過程為



指針也是迭代器

vector和string的迭代器支持的運算,數(shù)組的指針全部支持 。

這里顯然p指向了一個不存在的元素,他的用處就是提供其地址用于初始化。和尾后迭代器一樣,尾后指針也不能執(zhí)行解引和遞增操作。



標準庫begin和and

c++11中含有兩個名為begin和end的函數(shù),這兩個函數(shù)和容器函數(shù)同名,不過數(shù)組不是類,所以這兩個函數(shù)不是成員函數(shù),正確使用的形式是將數(shù)組作為他們的參數(shù)。

這兩個函數(shù)定義在iterator頭文件中。



指針運算

指針和迭代器具有相同的運算操作。特別的,兩個指針相減時,這兩個指針必須指向同一個數(shù)組的元素,他們相減的結(jié)果為ptrdiff_t的標準庫類型,和size_t一樣,ptrdiff_t也是一種定義在cstddef頭文件的機器相關(guān)的類型,因為差值可能為負,所以ptrdiff_t是一種帶符號類型。

如果兩個指針指向不想關(guān)的對象,則不能比較他們。

特別的,上述指針運算同樣適用于空指針和所指對象并非數(shù)組的指針,如果p是空指針,那么允許給p加上或減去一個值為0的常量表達式。兩個空指針允許彼此相見,結(jié)果為0。




解引用和指針運算的交互

注意括號的使用!



下標和指針

雖然標準庫類型vector和string也能執(zhí)行下標運算,但是數(shù)組與他們相比還是有不同,標準庫類型下標必須是無符號類型,而內(nèi)置的下標運算無此要求,內(nèi)置下標可以處理負值,結(jié)果也指向原來指針所指同一數(shù)組中的元素。只不過結(jié)果不可預測。

C++中有對C的兼容,但這里我們不過多贅述



與舊代碼的接口

很多C++程序在標準庫出現(xiàn)之前就已經(jīng)寫成,他們肯定沒用到string和vector類型。而且有一些C++語言實際上是C語言和其他語言的接口程序,當然也無法使用C++標準庫。因此現(xiàn)在C++程序不得不與那些充滿了數(shù)組或C風格字符串的代碼銜接。

混合string對象和C風格字符串

任何出現(xiàn)字符串字面值的地方都可以用以空字符結(jié)束的字符數(shù)組來替代

不能用string對象直接初始化指向字符的指針,為了實現(xiàn)這一功能,string提供了一個名為c_str的函數(shù)

顧名思義,c_str返回值是一個C風格的字符串,也就是說函數(shù)的返回結(jié)果是一個指針,該指針指向一個以空指針結(jié)束的字符數(shù)組。

我們無法保證c_str函數(shù)返回的函數(shù)一直有效,如果后續(xù)操作改變了s的值就可能讓之前返回的數(shù)組失去效用。

注意:如果執(zhí)行完c_str函數(shù)后程序想一直都能使用其返回的數(shù)組,最好將該數(shù)組重新拷貝一份。



使用數(shù)組初始化vector對象

我們不允許數(shù)組為另一個內(nèi)置類型的數(shù)組賦初值,也不允許使用vector對象初始化數(shù)組,不過允許使用數(shù)組來初始化vector對象。

這里begin和end就是賦值的起始位置和結(jié)束位置

我們也可以賦值一部分值


C++ 數(shù)組的評論 (共 條)

分享到微博請遵守國家法律
阳东县| 民县| 潼南县| 德钦县| 八宿县| 永年县| 福建省| 宾阳县| 云南省| 湖口县| 罗田县| 岚皋县| 长宁区| 永安市| 金秀| 孝义市| 双牌县| 梁平县| 玛纳斯县| 阿巴嘎旗| 曲靖市| 岳池县| 句容市| 延边| 阳西县| 铁岭市| 莲花县| 策勒县| 呼玛县| 平塘县| 建湖县| 城口县| 静安区| 二连浩特市| 荣昌县| 双城市| 厦门市| 平武县| 德格县| 南充市| 城固县|