C は C++ の基礎です。 C++ はデスクトップ アプリやゲームで広く使用されていますが、特にソフトウェアの世界に慣れていない場合は、C から始めるのに最適な選択肢です。その理由については、読み続けてください。
Cって何ですか?
C は高レベルの構造プログラミング言語です。 C で書かれたプログラムは移植可能です。 C は堅牢であるため、今日でもトップのプログラミング言語の 1 つです。これは、組み込みシステム、ドライバー、カーネル、システム アプリケーション、Microsoft Windows、Apple OS X などのオペレーティング システム、MySQL などのデータベース、および一部の IoT アプリケーションなどの複雑なプログラムに使用されます。
C はコンパイル言語であるため、マシン コードとプログラムの間に抽象化の層が提供されます。
2 つの数値を加算する簡単な C プログラムは次のようになります。
#include<stdio.h>
int main()
{
int a, b, sum;
printf("Enter two numbers to add: ");
scanf("%d%d", &a, &b);
sum = a + b;
printf("\nSum of %d and %d is %d", a, b, sum);
return 0;
}
出力は次のとおりです。
C プログラムには、 標準 入出力 で ある stdio.h が含ま れ ています。
STDIO は、 printf や scanf などの基本的な入出力関数を提供します。 printf はコンソールに何か (メッセージ、出力) を出力するために使用され、 scanf はコンソールから入力を取得するために使用されます。数値が整数であることを示すために %d を使用しています。
小数を与えると、奇妙な答えが得られます。これを回避するには、%f を使用できます。
main()
関数は、プログラムの実行時に最初に実行される関数です。構文は非常に単純で、変数の型を宣言してから使用します。
C++とは何ですか?
C++ は、抽象化、ポリモーフィズム、継承、カプセル化などのオブジェクト指向プログラミングの原則に基づいています。 C++ は、クラスとオブジェクトの概念を備えた C の拡張であると考えることができます。
データを保存するオブジェクトがあることで、プログラムにきちんとした構造が与えられました。たとえば、学生の詳細を保存したい場合は、Student クラスを作成し、そのクラスの下に名前、年齢、趣味、成績などの属性を作成できます。必要に応じていつでも実際の学生オブジェクトを作成できます。
class Student {
public:
char name[20];
int age;
float marks;
};
//This will create an object
Student student1 = new Student();
実際には、オブジェクトは実行時にのみ作成され、メモリが割り当てられます。
C++ は高いパフォーマンスを提供するため、現在でも高性能ゲーム エンジン、組み込みシステム、ブラウザ、コンパイラ、画像処理などのグラフィックス ベースのアプリケーションの開発に最も一般的な選択肢となっています。
MongoDB のようなデータベースは C++ で書かれているものはほとんどありません。 C と同様に、C++ も移植可能です。
先ほどの追加プログラムを C++ で書いてみましょう – さまざまな関数に注目してください。
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "Enter the numbers: ";
cin >> a >> b;
int sum = a + b;
cout << a << " + " << b << " = " << sum;
return 0;
}
printf と scanf の代わりに cout と cin を使用していることに注意してください。また、変数が使用される前に、プログラム内のどこでも型宣言を行うことができます (変数 sum など)。 print ステートメントは変数名のみを含む非常に単純です。 iostream ヘッダーの名前空間 std を使用していることに注意してください。 std には、cout、in などのメソッドがあります 。
C と C++ の類似点
C は C++ のサブセットであると言えます。 C と C++ の間には、プログラムの作成方法や使用されるアプリケーションなど、多くの類似点があります。どちらも堅牢でポータブル、そして高性能です。いくつかの重要な類似点は次のとおりです。
スノ。 | 特徴 | 説明 |
1. | 構文 | どちらも同じ構文 (変数宣言、行末セミコロン、命名規則など) を持ちます。 |
2. | 構造的および手順的 | コードの各行は 1 つずつ実行されます。プログラムは次のように構成されています。最初にインポート、次に変数宣言、そしてメインコードです。 |
3. | メイン機能 | 実行する必要があるすべてのコードは main() 関数内にある必要があります。 main() は、プログラム実行中の最初の関数呼び出しです。 |
4. | ポインタ | C と C++ はどちらも同じ方法でポインターを使用します。ポインタは、別の変数のメモリ アドレスを格納する変数です。たとえば、int a = 1; となります。このコードが実行されるとすぐに、メモリ (XX0011 など) が a に割り当てられます。 「a」のメモリ位置には、アンパサンド (&) を int ptr_a = &a; のように使用してアクセスできます。 |
5. | キーワードと演算子 | C に存在するすべてのキーワードと演算子は、C++ でも同様に有効です。たとえば、scope、static、public、int などです。C++ には追加の演算子やキーワードもあります。 |
C と C++ の違い
C++ は、C の欠点のいくつかを克服するために作成され、C のスーパーセットです。そのため、C で書かれたプログラムはすべて C++ で動作しますが、その逆はありません。 C と C++ の主な違いは、C++ がプログラミングのオブジェクト指向原則 (OOP) に基づいていることです。また、C++ では型チェックがより重視されています。以下に示すように、さらに微妙な違いもいくつかあります。
C | C++ |
1969 年から 1973 年にかけて、AT&T ベル研究所のデニス・リッチーによって開発されました。 | 1979 年に Bjarne Stroustrup によって開発されました。 |
オブジェクト指向プログラミングの原則に従っていない | カプセル化、ポリモーフィズム、継承などの OOPS の概念に基づく |
C には、char、switch、int、static、union などのキーワードが合計 32 個含まれています | すべての C キーワードは C++ で有効であり、さらに 31 個の追加キーワードも存在します。 |
手続き型プログラミングのみをサポート | C++ は、OOP、汎用プログラミング、関数型プログラミングなどの複数のプログラミング パラダイムをサポートします。 |
OOP の機能を C で実装することはできません。 | C++ のフレンドや仮想関数などの機能は、OOP の本質を強化します。 |
C は組み込みデータ型をサポートします。 | C++ は、クラスの概念を通じて組み込みデータ型とユーザー定義データ型の両方をサポートします。 |
演算子または関数のオーバーロードに対する備えがあります | C++ は演算子と関数の両方のオーバーロード (ポリモーフィズム) をサポートします。 |
メモリの割り当ては malloc() および calloc() 関数によって行われ、割り当ての解除は free() を使用して行われます。 | メモリ割り当ては new 演算子を使用して行われ、割り当て解除は delete 演算子を使用して行われます。 |
C は例外処理をサポートしていません | 例外処理をサポート |
データよりも手順や方法に重点を置く | データをより重視する |
C++ にのみ存在するその他の重要な機能は次のとおりです。
- namespace キーワードを使用すると、異なる名前空間に同じ名前の変数を作成できます。
- 構造体の内部で関数を使用できます。構造体にはアクセス修飾子を含めることもできます。
- 参照変数をサポートします。
C または C++ を使用する場合
これはプログラマーの間で非常によくある議論です。C++ ですべてができるのに、なぜ C を学ぶ必要があるのでしょうか?
C を学習すると、データ構造、ポインター、キーワード、スタック、ヒープ、メモリ割り当ての概念に関する強固な基礎が得られます。
それに加えて、C コンパイラは C++ コンパイラよりも高速であるため、C は依然として高パフォーマンスのアプリに広く使用されています。したがって、オブジェクトやクラス、仮想関数、テンプレートを必要としないコードのチャンクを作成したい場合は、C を使用してください。C++ はその広範なライブラリで過剰になる可能性があるためです。
カーネル、オペレーティング システム、データベースなどの低レベル コーディングのほとんどは依然として C で維持されているため、C を理解していれば C++ をより早く学習することもできます。
C++ は、最も高速かつ効率的な言語の 1 つであると考えられています。そのため、特にゲーム エンジン、IoT デバイス、デスクトップ アプリなどの高性能アプリケーションにおいて、依然としてトップのプログラミング言語の 1 つとなっています。多くのアプリケーションは、最適なパフォーマンスとオブジェクト指向プログラミングの利点を実現するために、C と C++ コードを組み合わせて使用します。
まとめ
この記事では、簡単なサンプル プログラムを使用して C と C++ の基本を学びました。両方の言語の主な違いと類似点、およびそれぞれをいつ使用するかについて説明しました。
ソフトウェア開発を始めたばかりの場合は、C から始めると自信がつきます。C は簡単で、データ構造、ポインター、メモリなどのプログラミング概念をすべて網羅しているからです。
のオンライン C コンパイラーおよび C++ コンパイラーの使用に興味があるかもしれません。