欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++基礎(chǔ)入門(mén)教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體

 更新時(shí)間:2014年11月03日 10:02:19   作者:笨木頭  
這篇文章主要介紹了C++基礎(chǔ)入門(mén)教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體,需要的朋友可以參考下

今天的標(biāo)題取得..好嚴(yán)肅的感覺(jué)。(小若:咳噗)

這章的內(nèi)容雖然還是很詳(lao)細(xì)(dao),但已經(jīng)開(kāi)始有很多值得記錄的內(nèi)容了~
那么,今天就來(lái)初次介紹數(shù)組與字符串…以及結(jié)構(gòu)體..還有共用體..吧。

1.數(shù)組

我記得大四實(shí)習(xí)的時(shí)候,請(qǐng)教同事:“什么是屬主?”(其實(shí)是和數(shù)據(jù)庫(kù)相關(guān)的東西)
然后同事驚訝地說(shuō)道:“啊,你連數(shù)組都不知道..這,基礎(chǔ)還是要好好補(bǔ)補(bǔ)…吶,數(shù)組的意思呢,是這樣的…”
我聽(tīng)著聽(tīng)著就不對(duì)勁,“等等,這是數(shù)組…其實(shí)我是問(wèn)這個(gè)屬主…”
然后同事松了一口氣,估計(jì)心里在想,“唉,嚇?biāo)牢?,我以為?lái)了個(gè)渾水摸魚(yú)的實(shí)習(xí)生了”。
 
等等,我好像跑題了。
那么,數(shù)組這么簡(jiǎn)單,我是不可能給大家介紹的了。
隨便說(shuō)說(shuō)它的聲明和初始化吧,如下代碼:

復(fù)制代碼 代碼如下:

// 1.普通人的聲明和初始化
int nums[3] = {25, 65, 4};
// 2.只聲明
int num[3];  // 這樣數(shù)組里的元素值是未知的
// 3.只聲明,然后賦值
int num[3];
num[0] = 1;
num[1] = 34;
num[3] = 9;
// 4.文藝青年的初始化
int nums[3] = {89}; // 第0個(gè)元素賦值為89,其他默認(rèn)為0
int nums[3] = {};   // 所有元素的值都為0
// 5.非主流青年的初始化
int nums[] = {1,2,3,4,5}; // 不指定大小,由后面的賦值內(nèi)容決定數(shù)組大小,書(shū)上說(shuō)不推薦,我本人不評(píng)價(jià)~
// 6.新人類的初始化(C++11)
int nums[3] {1, 2, 3}; // 省略了等號(hào)

代碼里已經(jīng)把大部分的情況都列出來(lái)了~
關(guān)于第3條的第二種,其實(shí)也是C++11的新特性。
 
最后,對(duì)于第6條這種的話,也是C++11的新東西,我個(gè)人不太喜歡~
這可能會(huì)讓不熟悉C++的人覺(jué)得很生疏(比如別人只是迫不得已要看一段C++代碼,結(jié)果出來(lái)了這句,可能會(huì)一下子蒙?。?。
而其他的形式即使沒(méi)有學(xué)過(guò)C++的人也能很輕易地知道這是在定義一個(gè)數(shù)組。(好吧,隨便說(shuō)說(shuō)的)

2.字符串

字符串有兩種,一種是C風(fēng)格的字符串,另一種是string(可以說(shuō)是一個(gè)類了)
C風(fēng)格字符串和數(shù)組很像,如下代碼:

復(fù)制代碼 代碼如下:

// 1.聰明人的初始化
char name[] = "mutou";
// 2.笨蛋的初始化
char name[6] = "mutou";
// 3.蛇精病的初始化
char name[6] = {'m', 'u', 't', 'o', 'u', '\0'};

這種風(fēng)格的字符串就相當(dāng)于char類型的數(shù)組了,但是它需要在最后加一個(gè)'\0'作為結(jié)束符(學(xué)過(guò)C的都知道喇)

我想,正常人都會(huì)使用第一種方式的(除非特殊情況?我還真不知道),”mutou”稱之為字符串常量,后面會(huì)自動(dòng)給數(shù)組補(bǔ)上一個(gè)'\0'符號(hào)的。

接著就是string字符串了,使用方式如下:

復(fù)制代碼 代碼如下:

// 1.先聲明,再初始化
std::string name;
name = "mutou";
// 2.聲明和初始化
std::string name = "mutou";
// 3.復(fù)制其他字符串內(nèi)容
std::string name1 = "mutou;
std::string name2 = "hello";
name1 = name2;   // 此時(shí)name1為"mutou"
name2 = "nihao"; // 此時(shí)name2為"nihao",name1仍然為"mutou"
// 4.連接字符串
std::string name = "mutou";
name += "hehe";

string在頭文件string里,所以使用的時(shí)候要加上 #include <string>。
并且它屬于命名空間std,所以也要加上std::
 
string字符串用起來(lái)很舒服,就像是本就該這么用的那種感覺(jué)~
如果使用C風(fēng)格字符串,那么,復(fù)制字符串和連接字符串都會(huì)變得很麻煩(需要使用strcpy和strcat函數(shù)來(lái)完成)

3.原始字符串

還有一個(gè)比較有意思的字符串,叫做原始字符串。
我們都知道,字符串是用雙引號(hào)來(lái)包圍的,如果要在字符串中出現(xiàn)其他雙引號(hào),就要用轉(zhuǎn)義字符\。
而使用原始字符串就可以避免這種麻煩,如下代碼:

復(fù)制代碼 代碼如下:

std::string name1 = R"("mutou")";
std::string name2 = R"*(("mutou"))*";
std::cout << name1.c_str() << "\n";
std::cout << name2.c_str() << "\n";

輸出結(jié)果如下:

復(fù)制代碼 代碼如下:

“mutou”
(“mutou”)

使用R開(kāi)頭,再用“(和)”符號(hào)把字符串包圍起來(lái),那么,中間的字符串就可以使用雙引號(hào)等原本需要轉(zhuǎn)義的字符了。
那么,name2字符串又是怎么回事呢?這是為了解決惡性循環(huán)的問(wèn)題——如何在原始字符串里使用額外的 ( 字符呢?
于是,我們可以在“(中間添加一個(gè)*號(hào),在)”中間也添加一個(gè)*,也就是變成這樣:R”*(…..中間很多字符串….)*”
于是就可以在字符串中間使用 ( 等字符了。
其實(shí)不一定得加*號(hào),可以加其他東西,而且可以加好幾個(gè),隨你喜歡,但也有限制,不能加空格、左右括號(hào)、斜杠和控制字符。

4.結(jié)構(gòu)體

結(jié)構(gòu)體應(yīng)該算是類的前身吧~
比較簡(jiǎn)單,不多說(shuō)了,隨便看看:

復(fù)制代碼 代碼如下:

// 定義
struct BadMan
{
    char name[]; // 也可以使用 std::string name; 但可能有些編譯器不支持
    int age;
    long money;
};
// 使用
BadMan man1 =
{
    "mutou",
    18,
    99999999
};
man1.money = 88888888;

好吧,不多說(shuō)了~

5.共用體

人格分裂聽(tīng)過(guò)嗎?
沒(méi)聽(tīng)過(guò)吧~人格分裂就是好幾個(gè)人的靈魂存在于同一個(gè)身體里,同時(shí)只能有一個(gè)靈魂在控制身體。(小若:瞎說(shuō)~!)
 
C++也有這樣的東西,那就是共用體,看代碼:

復(fù)制代碼 代碼如下:

union ManyOne
    {
        int age;
        long money;
        float girl;
    };
    ManyOne mOne;
    mOne.age = 25;
    std::cout << mOne.age << "\n\n";
    mOne.money = 999990;
    std::cout << mOne.age << "\n";
    std::cout << mOne.money << "\n";

輸出結(jié)果是:

復(fù)制代碼 代碼如下:

25
999990
999990

共用體和struct很像,唯一有一點(diǎn)區(qū)別,那就是,共用體里的屬性只能同時(shí)存在一個(gè)。

比如剛剛的代碼,雖然age在之前賦值為25,但是一旦給其他屬性賦值,那么age的值將不被保留。
因?yàn)樗麄兪褂玫氖峭粋€(gè)空間,這點(diǎn)要記住。

因?yàn)楣灿皿w的所有屬性都是使用一個(gè)存儲(chǔ)空間的,所以共用體占內(nèi)存的大小是以需要最大存儲(chǔ)空間的成員為準(zhǔn)的。
 
也許第一次聽(tīng)說(shuō)共用體的人會(huì)迷糊,其實(shí)共用體可以想象成是一個(gè)變量有多個(gè)名字,我們可以用不同的名字去使用它們。

只不過(guò),這不同的名字有著不相同的類型擺了。

6.結(jié)束

嗯,這本書(shū)實(shí)在是太詳(lao)細(xì)(dao)了,第四章還在繼續(xù)進(jìn)行中。(小若:你覺(jué)得和你比起來(lái),誰(shuí)更嘮叨?)

相關(guān)文章

最新評(píng)論