c++ 复合类型 读书笔记(二)
目錄
- String類
- string拼接 賦值
- struct
- 結(jié)構(gòu)數(shù)組
- 結(jié)構(gòu)中的位字段
- 共用體(union)
- 枚舉(enum)
- 設(shè)置枚舉量的值
- 枚舉量的取值范圍
- 指針與c++基本原理
- 聲明和初始化指針
- 指針與數(shù)字
- 引用
String類
使用string類,要包含頭文件string;
string類位于名稱空間std中,因此要提供一條using編譯指令,或者使用std::string
string拼接 賦值
string str1; string str2="top"; str1=str2;//這種用法在數(shù)組中不被允許的string的拼接可以用運(yùn)算符+將兩個(gè)string對(duì)象合并起來(lái);
strcpy(str1,str2); //把str2的值拷貝給str1 等同于str1=str2 strcat(str1,str2); //把str2的內(nèi)容添加到str1的后面這兩個(gè)函數(shù)比上面兩個(gè)函數(shù)多了一個(gè)參數(shù)(長(zhǎng)度N) strncpy(); strncat();確定字符串中字符數(shù)的方法:
int len = str1.size(); //size()是類的一個(gè)方法, int len1 = strlen(str1);struct
c++中在聲明結(jié)構(gòu)體變量時(shí),struct可省略;
與c中結(jié)構(gòu)體不同的是,c++結(jié)構(gòu)除了成員變量之外,還可以有成員函數(shù);
c++中可以使用賦值運(yùn)算符=將結(jié)構(gòu)賦值給另一個(gè)同類型的結(jié)構(gòu),這種賦值被稱為成員賦值;
結(jié)構(gòu)數(shù)組
person pop[100]; 這里的pop是一個(gè)person類型的數(shù)組,它的每一個(gè)元素都是person對(duì)象; cout<<pop[2].name;在初始化結(jié)構(gòu)數(shù)組: person pop[2]= {{"zhangsan",20,'m'},{"lisi",15,'n'} };結(jié)構(gòu)中的位字段
字段的類型應(yīng)為整型或枚舉,可以使用沒有名稱的字段來(lái)提供間距。每個(gè)成員都被成為位字段。
struct regi {unsigned int sn:4;unsigned int : 4;bool goodin:1;bool goodtor :1; };初始化也以通常的方式去初始化這些字段;訪問也是。共用體(union)
共用體是一種數(shù)據(jù)類型,它能夠存儲(chǔ)不同的數(shù)據(jù)類型,但只能同時(shí)存儲(chǔ)其中的一種類型。
共用體的長(zhǎng)度是其最大成員的長(zhǎng)度。
用途:當(dāng)數(shù)據(jù)項(xiàng)使用的是兩種或更多中格式時(shí)(不會(huì)同時(shí)使用),可節(jié)省空間;
當(dāng)結(jié)構(gòu)的其中一個(gè)數(shù)據(jù)成員為共同體時(shí),要訪問共用體當(dāng)中的成員要使用:
結(jié)構(gòu)體變量.共用體變量.共用體成員若共用體為匿名共用體。其成員將成為位于相應(yīng)地址處的變量,由于他們的地址相同。所以不需要中間標(biāo)識(shí)符,訪問時(shí)使用:
結(jié)構(gòu)體變量.共用體變量枚舉(enum)
提供一種創(chuàng)建符號(hào)常量的方式
enum spet {red,orange,yellow,green,blue,violet,indigo,ultraviolet};這條語(yǔ)句完成了: 讓spet成為新類型的名稱,spet被稱為枚舉 將{red,orange,yellow,green,blue,violet,indigo,ultraviolet作為符號(hào)常量,它們對(duì)應(yīng)的數(shù)值為0~7.這些常量叫做枚舉量。在不強(qiáng)制類型轉(zhuǎn)換的情況下,只能將定義枚舉時(shí)使用的枚舉量賦給枚舉的變量;
例如: spet band ; band= orange;//若band=1則為錯(cuò)誤,因?yàn)?不是枚舉量,orange才是設(shè)置枚舉量的值
顯示的設(shè)置枚舉量的值; enum bits{one=1,two=2,four=4};指定的值要為整數(shù)。也可以顯示的定義部分枚舉量的值 enum bits{one,two=100,fou}; one在默認(rèn)情況下為0,后面沒有被初始化的枚舉量的值將比前面的枚舉量的值大1;fou為101還可以創(chuàng)建多個(gè)值相同的枚舉量: enum {zero,null=0,one,numero=1}; 其中zero,null都為0,one,numero都為1枚舉量的取值范圍
每個(gè)枚舉都有取值范圍,通過強(qiáng)制轉(zhuǎn)換,可以將取值范圍中的任何整數(shù)值賦給枚舉變量。即使這個(gè)值不是枚舉值。
enum bits{one=1,two=2,four=4}; bits flag; flag=bits(3);3不是枚舉值,但他位于枚舉定義的取值范圍內(nèi); 取值范圍定義:首先,找出上限,需要知道枚舉量的最大值。找到大于這個(gè)最大值的,最小值的2的冪。將他減去1,得到的是取值范圍的上限,如果最小值不小于0,則取值范圍的下限為0;例如最大值為101,比這個(gè)數(shù)大的最小2次冪是128,因此上限為127;下限與上限相同,但要加上負(fù)號(hào)。選擇用多少空間來(lái)存儲(chǔ)枚舉有編譯器決定;
指針與c++基本原理
面向?qū)ο缶幊膛c傳統(tǒng)的過程性編程的區(qū)別在于。oop強(qiáng)調(diào)的是在運(yùn)行階段進(jìn)行決策,運(yùn)行階段指的是程序正在運(yùn)行時(shí),編譯階段指的是編譯器將程序組合起來(lái)時(shí)。 運(yùn)行階段決策提供了靈活性,可以根據(jù)當(dāng)時(shí)的情況進(jìn)行調(diào)整。 在c++中,使用關(guān)鍵字new請(qǐng)求正確數(shù)量的內(nèi)存以及使用只恨來(lái)跟蹤新分配的內(nèi)存的位置。聲明和初始化指針
指針在聲明是必須指定指針指向的數(shù)據(jù)的類型。
在c++中,int* 是一種復(fù)合類型,是指向int的指針
在使用指針時(shí),要注意!
在c++中創(chuàng)建指針時(shí),計(jì)算機(jī)將分配用來(lái)存儲(chǔ)地址的內(nèi)存,但不會(huì)分配用來(lái)存儲(chǔ)指針?biāo)赶虻臄?shù)據(jù)的內(nèi)存。為數(shù)據(jù)提供空間是一個(gè)獨(dú)立的步驟。 要在對(duì)指針應(yīng)用解除引用運(yùn)算符之前,將指針初始化為一個(gè)確定的,適當(dāng)?shù)牡刂贰ee(cuò)誤實(shí)例: long *follow; *follow=233;指針與數(shù)字
要將數(shù)字值作為地址來(lái)使用,應(yīng)通過強(qiáng)制類型轉(zhuǎn)換將數(shù)字轉(zhuǎn)換為適當(dāng)?shù)牡刂奉愋?#xff1a;
int* pt; pt=(int *0)0xB9000000;引用
在聲明引用變量時(shí)進(jìn)行初始化,必須在創(chuàng)建時(shí)進(jìn)行初始化;
總結(jié)
以上是生活随笔為你收集整理的c++ 复合类型 读书笔记(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原来PWM这么简单!通过锯齿波作为载波和
- 下一篇: PIC单片机之PWM PWM原理