初心者プログラマーが C 言語と C++ の違いについて知っておくべきこと

烟雨青岚
リリース: 2020-06-19 13:42:44
転載
2530 人が閲覧しました

初心者プログラマーが C 言語と C++ の違いについて知っておくべきこと

初心者プログラマが C 言語について知っておくべきことC

プログラミングを初めて学んだとき、多くの人は C 言語と C が同じものだと思っていませんか?今回は以下のC言語とCの違いを詳しく紹介しますので一緒に学びましょう。

1. キーワード

青いマークは C 言語のキーワードです。C は C 言語のすべてのキーワードを継承します。次の赤いマークは、C 言語の C キーワード以外を含む C です。 (C 98 によれば、C には 63 のキーワードが含まれています)


初心者プログラマーが C 言語と C++ の違いについて知っておくべきこと

2. ソース ファイルの違い C 言語ファイルのサフィックスは、c,c です。元のファイル名の拡張子は .cpp です
ソースファイル作成時に何も指定しなかった場合、デフォルトは .cpp です
3 戻り値が異なります
C 言語では、関数に指定がない場合戻り値の型。デフォルトは int 型で、乱数 (通常は 0XCCCCCCCC) を返します。
C では、関数に戻り値がない場合、void 型として指定する必要があります。そうしないとコンパイルが通過できません。
4 . パラメータ リスト
C 言語では、関数が指定されたパラメータ リストを持たない場合、デフォルトで任意の数のパラメータを受け取ることができます
C では、厳密なパラメータ タイプ検出があります。パラメータ リストのない関数デフォルトは void であり、パラメータを受け取りません。
デフォルト パラメータ
デフォルト パラメータは、宣言および定義時にデフォルト値を指定する関数パラメータです。この関数を呼び出すとき、実パラメータが指定されていない場合はデフォルト値が使用され、それ以外の場合は指定された実パラメータが使用されます。

次のコード:

#include<iostream>using namespace std;void test(int a = 1)
{    cout << a << endl;
}int main()
{
    test();
    test(10);//输出的结果是1
    return 0;//函数输出结果是10}
ログイン後にコピー

デフォルト パラメータは 2 つのカテゴリに分けられ、1 つは完全デフォルト、もう 1 つは準デフォルトです。

最初は完全なデフォルトです。完全なデフォルト パラメータのすべてのパラメータにはデフォルト値があります。パラメータが手動で渡されない場合、コンパイラはデフォルト パラメータ リスト内のパラメータを使用します。ただし、パラメータを渡すときに一部のパラメータのみが渡された場合、値は左から右に照合されることに注意してください。

コード例:

#include<iostream>using namespace std;void test(int a = 1,int b = 2, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}int main()
{
    test();//1 2 3
    test(10);//10 2 3
    test(10, 20);//10 20 3
    test(10, 20, 30);//10 20 30
    return 0;
}
ログイン後にコピー

準デフォルトのパラメーター コードのデモ:

void test(int a ,int b = 2, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}void test1(int a, int b, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}
ログイン後にコピー

テスト関数は少なくとも 1 つのパラメーターを渡し、 test1 関数以上 2 つのパラメータを渡すだけで関数は正常に実行できます。

注: デフォルト値を持つパラメータはパラメータ リストの最後に配置する必要があります。パラメータは右から左に渡されるためです。
デフォルト パラメータは関数宣言と定義の両方に含めることはできません。どちらか 1 つだけを残すことができます。
デフォルト値は定数またはグローバル
変数である必要があります。
C言語はデフォルトをサポートしていません。

5. C は関数のオーバーロードをサポートしていますが、C 言語はそれをサポートしていません 実際の開発では、同様の機能を持つ複数の関数を実装する必要がある場合がありますが、細部が異なる場合があります。たとえば、int、float、char、bool などの複数の型を持つ 2 つの変数の値を交換したい場合は、パラメータを通じて変数のアドレスを関数に渡す必要があります。 C 言語では、プログラマは異なる名前を持つ 3 つの関数を設計する必要があることがよくあり、その関数プロトタイプは次のようなものになります。

void swap1(int *a, int *b); //交换 int 变量的值
void swap2(float *a, float *b); //交换 float 变量的值
void swap3(char *a, char *b); //交换 char 变量的值
void swap4(bool *a, bool *b); //交换 bool 变量的值
ログイン後にコピー

しかし、C では、これはまったく必要ありません。 C では、パラメーター リストが異なる限り、複数の関数に同じ名前を付けることができます。これが関数のオーバーロードです。オーバーロードを使用すると、関数名を複数の目的に使用できます。

パラメータの種類、パラメータの数、パラメータの順序を含むパラメータリストはパラメータシグネチャとも呼ばれ、1 つだけ異なる場合は別のパラメータリストと呼ばれます。

#include <iostream>using namespace std;//交换 int 变量的值void Swap(int *a, int *b){int temp = *a;
*a = *b;
*b = temp;
}//交换 float 变量的值void Swap(float *a, float *b){float temp = *a;
*a = *b;
*b = temp;
}//交换 char 变量的值void Swap(char *a, char *b){char temp = *a;
*a = *b;
*b = temp;
}//交换 bool 变量的值void Swap(bool *a, bool *b){char temp = *a;
*a = *b;
*b = temp;
}int main(){//交换 int 变量的值int n1 = 100, n2 = 200;
Swap(&n1, &n2);cout<<n1<<", "<<n2<<endl;//交换 float 变量的值float f1 = 12.5, f2 = 56.93;
Swap(&f1, &f2);cout<<f1<<", "<<f2<<endl;//交换 char 变量的值char c1 = &#39;A&#39;, c2 = &#39;B&#39;;
Swap(&c1, &c2);cout<<c1<<", "<<c2<<endl;//交换 bool 变量的值bool b1 = false, b2 = true;
Swap(&b1, &b2);cout<<b1<<", "<<b2<<endl;return 0;
}
ログイン後にコピー

実行結果:

200, 100 
56.93, 12.5 
B, A 
1, 0
ログイン後にコピー

オーバーロードとは、スコープ内 (同じクラス、同じ名前空間など) に複数の関数があることを意味します。同じ名前ですが、パラメータが異なります。オーバーロードの結果、関数名が複数の用途に使用できるようになり、名前付けがより便利になり (中規模および大規模なプロジェクトでは、変数、関数、およびクラスの名前付けは厄介な問題になります)、呼び出しがより柔軟になります。

オーバーロード関数を使用する場合、同じ名前の関数の機能は同一または類似している必要があります。まったく関係のない関数を同じ関数名で実装しないでください。プログラムは実行できますが、可読性は低くなります。良いものなのに人々を混乱させます。私は当惑しています。

パラメータ リストが異なれば、パラメータの数、タイプ、または順序も異なります。パラメータ名が異なるだけでは受け入れられません。関数の戻り値をオーバーロードの基準として使用することはできません。

関数のオーバーロードの規則:

(1) 関数名は同じである必要があります。

(2) 関数の戻り値の型は同じでも異なっていても構いません。

(3)仅仅返回类型不同不足以成为函数的重载。
6、指针和引用
C语言中函数传参方式有两种:传值和传址
以传值方式,在函数调用过程中会生成一份临时变量用形参代替,最终把实参的值传递给新分配的临时形参。它的优点是避免了函数调用的副作用,却无法改变形参的值。如果要改变实参的值,只能通过指针传递。
指针可以解决问题,但是不安全,因此在C++中引入了引用。
引用:引用不是新定义的一个变量,他是原变量的一个别名,编译器不会为引用变量开辟空间,它和他引用的变量共用同一块内存空间。
类型& 变量(对象名)=引用变量
int &num1=num0;
引用特性;:
(1)引用定义时必须初始化
(2)一个变量可以有多个引用
(3)引用一旦绑定一个实体就不能改变为其他变量的引用
//指针和引用的区别
引用不可以为空,但指针可以为空
引用不可以改变指向,对一个对象”至死不渝”;但是指针可以改变指向,而指向其它对象
引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。

7、命名空间
在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或者名字污染,namespace关键字的出现就是解决这种问题。而C语言中没有。
8、输入与输出
cout代表c++的输出流
cin代表c++的输入流
它们都是在头文件“iostream”中定义。
“cout”必须与”<<”一起使用,“<<”起到插入的作用。
在一条语句中可以多次使用“<<”输出多个数据。
如:cout<

#include <iostream>using namespace std;int main()
{int a,b;cout<<"请输入a,b的值"<<endl;cin>>a>>b;cout<<"输出a的值"<<a<<"输出b的值"<<b<<endl;return 0;
}
ログイン後にコピー

感谢大家的阅读,大家现在知道C语言和C++的区别了吗?                                  

本文转自:https://blog.csdn.net/qq_39539470/article/details/81268916

推荐教程:《C语言

以上が初心者プログラマーが C 言語と C++ の違いについて知っておくべきことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート