C ++ PrimerPlus第2章

1日目

「第2章:C ++の学習を開始する」

この章では、主にC ++の基本構造の概要を説明します。その多くは簡単な紹介であり、本「C ++ Primer Plus」の最後で、主に次の内容で詳細に説明する必要があります。

  • プリプロセッサコンパイルディレクティブ#include
  • 名前付けstdを使用したコンパイル命令
  • ヘッダーファイルと名前名
  • cin、cout、endl
  • 関数
  • プログラミングの練習

1.プリプロセッサコンパイルディレクティブ#includeは
、主に次のようにメインコンパイルの前にソースファイルを処理するためのものです。

#include <iostream>

これは、iostreamファイルのコンテンツをプログラムにフィールド化するためのプリプロセッサです。では、なぜiostreamファイルのコンテンツをプログラムに追加するのでしょうか。その答えは、プログラムと外界との間のコミュニケーションに関するものです。ここでのioは、入力と出力を指します。#includeコンパイル命令により、iostreamファイルの内容がソースコードファイルの内容とともにコンパイラに送信されます。iostreamファイルの内容は、上記のプログラムのコード行に置き換わります。元のファイルは変更されておらず、ソースコードファイルとiostreamを組み合わせて複合ファイルにし、コンパイルの次の段階で使用します。さらに、入力と出力にcinとcoutを使用する場合は、ファイルiostreamを含める必要があります。

2.ネームスペースstdを使用したコンパイラ命令
は、実際にはネームスペースと組み合わせて理解できますこの本の翻訳は名前名と呼ばれ、おそらくあなたが見るものは名前名と呼ばれています(私がこのように理解しているかどうかはわかりません)。

using namespace std;

このステートメントの操作は、名前空間のインポートと呼ばれます。この命令の目的は、std名前空間内のすべての名前を使用可能にすることです。もちろん、現在のより厳密な概念は、名前空間にアクセスする必要があるstd関数のみにアクセスを許可することです。これは、を使用したコンパイル命令が配置されている場所に関連しており、その書き込みフォームにも関連しています。次の4つの例を示します。

最初のタイプ:関数定義の前に配置して、ファイル内のすべての関数が名前名std内のすべての要素を使用できるようにします。

#include <iostream>
using namespace std;

int main()
{
    
    
	cout << hello,world!<<endl;
	return 0;
}

2番目:特定の関数を挿入して、関数が名前名std内のすべての要素を使用できるようにします。

#include <iostream>

int main()
{
    
    
	using namespace std;
	cout << hello,world!<<endl;
	return 0;
}

3番目のタイプ:関数が指定された要素のみを使用するようにします。

#include <iostream>
using std::cout;//注意此处写法,不加namespace
int main()
{
    
    
	cout << hello,world!<<endl;//由于using编译指令指定了cout,所以文件下所有函数只能用cout,其他未指定的,比如cin就用不了
	return 0;
}

4番目:名前名stdの要素を使用する必要がある場合は、接頭辞std ::を使用して、を使用するコンパイラディレクティブをまったく使用しないでください。

#include <iostream>
int main()
{
    
    
	std::cout << hello,world!<< std::endl;
	return 0;
}

3.ヘッダーファイルと名前名
ヘッダーファイルについて:
C ++現在の使用法は、拡張子hが古いCヘッダーファイル用に予約されており(C ++プログラムは引き続きこの種のファイルを使用できます)、C ++ヘッダーファイルには拡張子がありません一部のCヘッダーファイルはC ++ヘッダーファイルに変換されてから名前が変更されます。拡張子hが削除され、cがファイルヘッダーに追加されます。たとえば、math.hのC ++バージョンはcmathです。

名前名について:
重要なのは、2つのカプセル化された製品が使用され、両方にwanda()という名前の関数が含まれている場合、コンパイラーはwanda()関数を使用するときに参照するバージョンを認識しないということです。ネームスペースを使用すると、メーカーは製品をネームスペースと呼ばれる単位にカプセル化できるため、ネームスペースで区別できます。

Microflop::wanda("go dancing?");//用了Microflop的版本下函数
Piscine::wanda("a fish named ss");//用了Piscine的版本下函数

このように、クラス、関数、および変数はC ++コンパイラの標準コンポーネントであり、名前名stdに配置されるようになりました(これは、ヘッダーファイルの拡張子がhでない場合にのみ当てはまります。この文はその意味をあまり理解していません」)。したがって、iostreamでの出力に使用されるcoutは実際にはstd :: coutであり、cinは実際にはstd :: cinです。したがって、ユーザーが怠惰すぎてstd ::を追加できないため、using命令が表示される理由も説明できます。怠惰になるためにusing命令が作成されました。最初は、namespace stdを直接使用してから、直接使用できます。

4. Cin、cout、およびendl
は、入力ストリームと出力ストリーム、オペレーターの過負荷などの低レベルの知識を含む、最初に最も公開される必要があります。現在、理解は深くなく、既存の知識の説明のみが行われます。

cinとcoutはどちらもスマートオブジェクトであり、cinは、キーボードで入力された一連の文字を、情報を受け取る変数に受け入れられる形式に変換できます。CoutはC言語のprintfと比較できます。printfでは、%dと%sを使用して出力をフォーマットします。指定されたタイプが正しくない場合、エラーが報告されますが、coutは報告されません。

endlの要点は、彼と\ nの違いです。一般的に、引用符で囲まれた文字列を表示する場合、通常は\ nが使用され、残りは制御文字endlが使用されます。endlは、プログラムが続行する前に出力が更新される(画面にすぐに表示される)ことを保証しますが、\ nが機能しないため、一部のシステムでは、情報を入力した後にプロンプ​​トが表示される場合があります。もちろん、オンラインでさらに専門的な声明を確認した後、endlの定義を見ることができます。

template<class _Elem,class _Traits> inline basic_ostream<_Elem, _Traits>&
__CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
{
    
       // insert newline and flush stream
    _Ostr.put(_Ostr.widen('\n'));
    _Ostr.flush();
    return (_Ostr);
}

次に、「フラッシュ:バッファをフラッシュし、バッファからターゲットデバイスにストリームを出力し、バッファを空にする」というフラッシュ操作があることがわかります。上記を理解できます。もちろん、endlの詳細については、C ++のendlの本質を参照しください。

5.機能
トピックに直接行きましょう以下のトピックは基本的に機能を使用します


///第三题
#include <iostream>
using namespace std;

void show_mice();
void show_running();

int main()
{
    
    
	show_mice();
	show_mice();
	show_running();
	show_running();
	system("pause");
	return 0;
}

void show_mice()
{
    
    
	cout << "Three blind mice" << endl;
	return ;
}

void show_running()
{
    
    
	cout << "See how they run" << endl;
	return;
}



///第四题
#include <iostream>
using namespace std;

int main()
{
    
    
	int age;
	cout << "Enter your age:";
	cin >> age;
	cout << "your age include " << age * 12 << " months"<<endl;
	system("pause");
	return 0;
}




///第五题
#include <iostream>

using namespace std;

double wendu(double a);

int main()
{
    
    
	double Cvalue;
	cout << "Please enter a celsius value: ";
	cin >> Cvalue;
	cout << Cvalue << " degrees Celsius is " << wendu(Cvalue) << " degrees Fahrenheit.";
	system("pause");
	return 0;
}

double wendu(double a)
{
    
    
	return 1.8 * a + 32.0;
}




///第七题
#include <iostream>

using std::cout;
using std::cin;

void showtime(int h, int m);

int main()
{
    
    
	int hour, minute;
	cout << "Enter the number of hours: ";
	cin >> hour;
	cout << "Enter the number of minutes: ";
	cin >> minute;
	showtime(hour,minute);
	system("pause");
	return 0;
}

void showtime(int h, int m)
{
    
    
	cout << "Time: ";
	cout << h;
	cout << ":";
	cout << m;
	return;
}

まとめ:初めてブログを書いたときは、今でもとても気持ちがいいです。知識を学んだ後は、何らかの方法で共有する必要があります。共有の過程で、知識を確認し、元の読み物を見つけました。あまり注意を払わないと、書きたいときに通れないことに気付くでしょう。正直に読まなければなりません。一般的に、私は初日に固執し、明日も続けます!

最後に、それはとても寒いです!

おすすめ

転載: blog.csdn.net/Jiangrenzhi1995/article/details/112431161