C++基本入門教程(三):數組、字符串、構造體、共用體。本站提示廣大學習愛好者:(C++基本入門教程(三):數組、字符串、構造體、共用體)文章只能為提供參考,不一定能成為您想要的結果。以下是C++基本入門教程(三):數組、字符串、構造體、共用體正文
明天的題目獲得..好嚴正的感到。(小若:咳噗)
這章的內容固然照樣很詳(lao)細(dao),但曾經開端有許多值得記載的內容了~
那末,明天就來首次引見數組與字符串…和構造體..還有共用體..吧。
1.數組
我記得年夜四練習的時刻,就教同事:“甚麼是屬主?”(實際上是和數據庫相干的器械)
然後同事驚奇地說道:“啊,你連數組都不曉得..這,基本照樣要好好補補…吶,數組的意思呢,是如許的…”
我聽著聽著就纰謬勁,“等等,這是數組…其實我是問這個屬主…”
然後同事松了一口吻,估量心裡在想,“唉,嚇逝世我,我認為來了個混水摸魚的練習生了”。
等等,我似乎跑題了。
那末,數組這麼簡略,我是弗成能給年夜家引見的了。
隨意說說它的聲明和初始化吧,以下代碼:
// 1.通俗人的聲明和初始化
int nums[3] = {25, 65, 4};
// 2.只聲明
int num[3]; // 如許數組裡的元素值是未知的
// 3.只聲明,然後賦值
int num[3];
num[0] = 1;
num[1] = 34;
num[3] = 9;
// 4.文藝青年的初始化
int nums[3] = {89}; // 第0個元素賦值為89,其他默許為0
int nums[3] = {}; // 一切元素的值都為0
// 5.非主流青年的初始化
int nums[] = {1,2,3,4,5}; // 不指定年夜小,由前面的賦值內容決議數組年夜小,書上說不推舉,我自己不評價~
// 6.新人類的初始化(C++11)
int nums[3] {1, 2, 3}; // 省略了等號
代碼裡曾經把年夜部門的情形都列出來了~
關於第3條的第二種,其實也是C++11的新特征。
最初,關於第6條這類的話,也是C++11的新器械,我小我不太愛好~
這能夠會讓不熟習C++的人認為很陌生(好比他人只是必不得已要看一段C++代碼,成果出來了這句,能夠會一會兒蒙住)。
而其他的情勢即便沒有學過C++的人也能很隨意馬虎地曉得這是在界說一個數組。(好吧,隨意說說的)
2.字符串
字符串有兩種,一種是C作風的字符串,另外一種是string(可以說是一個類了)
C作風字符串和數組很像,以下代碼:
// 1.聰慧人的初始化
char name[] = "mutou";
// 2.笨伯的初始化
char name[6] = "mutou";
// 3.蛇精病的初始化
char name[6] = {'m', 'u', 't', 'o', 'u', '\0'};
這類作風的字符串就相當於char類型的數組了,然則它須要在最初加一個'\0'作為停止符(學過C的都曉得喇)
我想,正常人都邑應用第一種方法的(除非特別情形?我還真不曉得),”mutou”稱之為字符串常量,前面會主動給數組補上一個'\0'符號的。
接著就是string字符串了,應用方法以下:
// 1.先聲明,再初始化
std::string name;
name = "mutou";
// 2.聲明和初始化
std::string name = "mutou";
// 3.復制其他字符串內容
std::string name1 = "mutou;
std::string name2 = "hello";
name1 = name2; // 此時name1為"mutou"
name2 = "nihao"; // 此時name2為"nihao",name1依然為"mutou"
// 4.銜接字符串
std::string name = "mutou";
name += "hehe";
string在頭文件string裡,所以應用的時刻要加上 #include <string>。
而且它屬於定名空間std,所以也要加上std::
string字符串用起來很舒暢,就像是本就該這麼用的那種感到~
假如應用C作風字符串,那末,復制字符串和銜接字符串都邑變得很費事(須要應用strcpy和strcat函數來完成)
3.原始字符串
還有一個比擬成心思的字符串,叫做原始字符串。
我們都曉得,字符串是用雙引號來包抄的,假如要在字符串中湧現其他雙引號,就要用本義字符\。
而應用原始字符串便可以免這類費事,以下代碼:
std::string name1 = R"("mutou")";
std::string name2 = R"*(("mutou"))*";
std::cout << name1.c_str() << "\n";
std::cout << name2.c_str() << "\n";
輸入成果以下:
“mutou”
(“mutou”)
應用R開首,再用“(和)”符號把字符串包抄起來,那末,中央的字符串便可以應用雙引號等本來須要本義的字符了。
那末,name2字符串又是怎樣回事呢?這是為懂得決惡性輪回的成績——若何在原始字符串裡應用額定的 ( 字符呢?
因而,我們可以在“(中央添加一個*號,在)”中央也添加一個*,也就是釀成如許:R”*(…..中央許多字符串….)*”
因而便可以在字符串中央應用 ( 等字符了。
其實紛歧定得加*號,可以加其他器械,並且可以加好幾個,隨你愛好,但也無限制,不克不及加空格、閣下括號、斜槓和掌握字符。
4.構造體
構造體應當算是類的前身吧~
比擬簡略,不多說了,隨意看看:
// 界說
struct BadMan
{
char name[]; // 也能夠應用 std::string name; 但能夠有些編譯器不支撐
int age;
long money;
};
// 應用
BadMan man1 =
{
"mutou",
18,
99999999
};
man1.money = 88888888;
好吧,不多說了~
5.共用體
人格決裂聽過嗎?
沒聽過吧~人格決裂就是好幾小我的魂魄存在於統一個身材裡,同時只能有一個魂魄在掌握身材。(小若:瞎扯~!)
C++也有如許的器械,那就是共用體,看代碼:
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";
輸入成果是:
25
999990
999990
共用體和struct很像,獨一有一點差別,那就是,共用體裡的屬性只能同時存在一個。
好比方才的代碼,固然age在之前賦值為25,然則一旦給其他屬性賦值,那末age的值將不被保存。
由於他們應用的是統一個空間,這點要記住。
由於共用體的一切屬性都是應用一個存儲空間的,所以共用體占內存的年夜小是以須要最年夜存儲空間的成員為准的。
或許第一次據說共用體的人會含混,其實共用體可以想象成是一個變量有多個名字,我們可以用分歧的名字去應用它們。
只不外,這分歧的名字有著不雷同的類型擺了。
6.停止
嗯,這本書其實是太詳(lao)細(dao)了,第四章還在持續停止中。(小若:你認為和你比起來,誰更絮聒?)