程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++基本入門教程(三):數組、字符串、構造體、共用體

C++基本入門教程(三):數組、字符串、構造體、共用體

編輯:關於C++

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)了,第四章還在持續停止中。(小若:你認為和你比起來,誰更絮聒?)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved