C++基本入門チュートリアル(3):配列、文字列、構造体、共通体

4964 ワード

今日のタイトル取得..シリアスな感じですね.(小若:ゲップ)
この章の内容はまだ详しいですが、记录すべき内容がたくさんあります~では、配列と文字列...および构造体について初めてご绍介します..共用体もある..でしょう.
1.配列
私は大学4年生の実習の時、同僚に「何が所有者なのか」を教えてもらったのを覚えています.(実はデータベースに関するものです)そして同僚は驚いて言いました.「ああ、配列も知らないんだね.これ、基礎はしっかり補って…ね、配列の意味はね、そうなんだ…」私は聞いているうちに変になりました.「待って、これは配列だ…実は私はこの所有者に聞いているんだ…」そして同僚はほっとして、心の中で考えていました.「ああ、びっくりした.魚を触る実習生が来たと思った」.ちょっと待って、私は問題を逃したようです.では、配列がこんなに簡単では、皆さんに紹介することはできません.宣言と初期化について簡単に話しましょう.次のコードです.
 
  
// 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条の第2種については、実はC++11の新しい特性でもあります.最后に、第6条という言叶に対しても、C++11の新しいもので、个人的にはあまり好きではありません~これはC++に详しくない人には疎いと思われるかもしれません(例えば、他の人はやむを得ずC++コードを见なければならないだけで、结局この言叶が出てきて、一気に隠すかもしれません).他の形式はC++を学んだことがない人でも配列を定義していることを簡単に知ることができます.(よし、勝手に言って)
2.文字列
文字列には2種類あります.1つはCスタイルの文字列で、もう1つは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を付けます.さらにネーミングスペースstdに属するのでstd::string文字列も使い心地が良く、本来使うべき感覚のようです~Cスタイル文字列を使うとコピー文字列や接続文字列が面倒になります(strcpyやstrcat関数を使って完成する必要があります)
3.元の文字列
元の文字列という興味深い文字列もあります.文字列は二重引用符で囲まれており、文字列に他の二重引用符を表示するには、エスケープ文字を使用します.元の文字列を使用すると、次のコードのようなトラブルを回避できます.
 
  
std::string name1 = R"("mutou")";
std::string name2 = R"*(("mutou"))*";
std::cout << name1.c_str() << "
";
std::cout << name2.c_str() << "
";

出力結果は次のとおりです.
 
  
“mutou”
(“mutou”)

Rの先頭に「(和)」の記号で文字列を囲み、中間の文字列には二重引用符など本来のエスケープが必要な文字を使うことができます.
では、name 2文字列はどうなっているのでしょうか.これは悪循環の問題を解決するためです――どのように原始文字列の中で余分な(文字を使いますか?
すると、「(真ん中に*番号を追加して、)」の中にも*を追加することができます.つまり、R」*(......の中に文字列がたくさんあります......)*」となります.
すると文字列の間で(等文字になります.
実は*号をつける必要はありません.他のものを加えることができます.そして、いくつか追加することができます.好きなように、スペース、左右の括弧、スラッシュ、制御文字を加えることはできません.
4.構造体
構造体は類の前身と言えるでしょう~比較的簡単で、あまり言わないで、勝手に見てください:
 
  
//
struct BadMan
{
    char name[]; // std::string name;
    int age;
    long money;
};
//
BadMan man1 =
{
    "mutou",
    18,
    99999999
};
man1.money = 88888888;

よし、もう言わないで~
5.共用体
人格分裂を聞いたことがありますか?聞いたことがないでしょう~人格分裂は何人かの魂が同じ体の中に存在し、同時に1人の魂だけが体をコントロールしています.(小若:でたらめだよ~!)C++にもこのようなものがあります.それは共用体です.コードを見てください.
 
  
union ManyOne
    {
        int age;
        long money;
        float girl;
    };
    ManyOne mOne;
    mOne.age = 25;
    std::cout << mOne.age << "

";
    mOne.money = 999990;
    std::cout << mOne.age << "
";
    std::cout << mOne.money << "
";

出力結果は次のとおりです.
 
  
25
999990
999990

共用体はstructに似ていて、唯一違いがあります.それは、共用体の属性が同時に1つしか存在しないことです.
たとえば、さっきのコードでは、ageは25に割り当てられていましたが、他の属性に値を割り当てると、ageの値は保持されません.同じ空間を使っているので、覚えておいてください.
コモンのすべてのプロパティは1つのストレージ領域を使用するため、コモンがメモリに占めるサイズは、最大のストレージ領域を必要とするメンバーに準拠します.共用体を初めて聞いた人はぼんやりするかもしれませんが、実は共用体は1つの変数に複数の名前があることを想像することができ、私たちは異なる名前で使用することができます.
ただ、この異なる名前には異なるタイプが並んでいます.
6.終了
ええと、この本は本当に詳しくて、第4章はまだ続いています.小若:お前より、誰がうるさいと思う?