ホームページ >バックエンド開発 >C++ >C++関数のパラメータ受け渡し方法の包括的解析

C++関数のパラメータ受け渡し方法の包括的解析

WBOY
WBOYオリジナル
2023-08-21 21:51:272331ブラウズ

C は、強力な機能と柔軟な構文を備えた優れたプログラミング言語です。 Cプログラミングでは関数にパラメータを渡すことがよくありますが、パラメータを渡す際にパラメータの渡し方が非常に重要になります。この記事では、値による受け渡し、参照による受け渡し、ポインタによる受け渡しなど、C 関数のパラメーターの受け渡し方法の違いを包括的に分析します。

1. 値によるパラメータの受け渡し方法

C では、関数にパラメータを渡すとき、値によるパラメータの受け渡しが最も一般的な方法です。パラメータの値渡しとは、関数を呼び出すときに、実パラメータの値が関数定義内の対応する仮パラメータの変数にコピーされることを意味します。関数内の仮パラメータの操作は、実際のパラメータには影響しません。

以下では、値パラメータの受け渡しメソッドの特性を示すコードを使用します。

#include<iostream>
using namespace std;

void changeValue(int x){
    x = 10;
}

int main() {
    int num = 5;
    cout << "Before calling the function: " << num << endl;
    changeValue(num);
    cout << "After calling the function: " << num << endl;
    system("pause");
    return 0;
}

プログラムを実行すると、出力は次のようになります。

Before calling the function: 5
After calling the function: 5

As出力結果からわかります。関数changeValue()は内部的にx変数の値を10に設定しますが、関数の実行後もnum変数の値は5のままです。これは、パスバイで-value パラメータの受け渡しメソッドでは、仮パラメータへの変更は実際のパラメータには影響しません。

2. 参照によるパラメータの受け渡し方法

Reference は C の重要なデータ型です。参照変数は、別の既存の変数のエイリアスとみなすことができます。それらは同じアドレスを共有します。 1 つの変数に対して行われた変更は、他の変数にも影響を与えます。パラメータの参照渡しとは、実パラメータの参照を対応する仮パラメータに渡して関数を呼び出すことを指します。関数の実行時に渡されるパラメータは、実際には実パラメータが配置されているメモリアドレスへの参照であり、このとき実パラメータと仮パラメータは同じアドレスの値を指します。

以下では、コードの一部を使用して、パラメーター受け渡しメソッドの特性を示します。

#include<iostream>
using namespace std;

void changeValue(int &x){
    x = 10;
}

int main() {
    int num = 5;
    cout << "Before calling the function: " << num << endl;
    changeValue(num);
    cout << "After calling the function: " << num << endl;
    system("pause");
    return 0;
}

プログラムを実行すると、出力は次のようになります。

Before calling the function: 5
After calling the function: 10

As canパラメータの受け渡し方法では、関数は実パラメータの値を 10 に変更し、num の値も変更します。これは、パラメーターを参照渡しする場合、仮パラメーターへの変更が実際のパラメーターに影響を与えることを示しています。

3. ポインタパラメータの受け渡し方法

ポインタも C では非常に重要なデータ型で、メモリアドレスを格納し、ポインタを通じてメモリアドレス内のデータにアクセスできます。ポインタ引数の受け渡し方式とは、関数呼び出しにおいて実引数変数のアドレスを関数内の仮引数ポインタ変数に渡し、関数はポインタを介して実引数変数にアクセスする方法です。

以下では、コードの一部を使用して、ポインター パラメーター受け渡しメソッドの特性を示します。

#include<iostream>
using namespace std;

void changeValue(int *x){
    *x = 10;
}

int main() {
    int num = 5;
    cout << "Before calling the function: " << num << endl;
    changeValue(&num);
    cout << "After calling the function: " << num << endl;
    system("pause");
    return 0;
}

プログラムを実行すると、出力は次のようになります。

Before calling the function: 5
After calling the function: 10

Asポインタパラメータの受け渡しメソッドでは、関数は実パラメータの値を10に変更し、numの値も変更します。これは、ポインター パラメーター受け渡しモードでは、仮パラメーターへの変更が実際のパラメーターに影響を与えることを示しています。

4. 定数値、定数参照、定数ポインターの受け渡し

定数値、定数参照、定数ポインターの受け渡しは、C 関数のパラメーターを渡すいくつかの方法でもあります。その特徴は最初の 3 つの方法にあります。これをベースにデータ保護機能が追加されています。渡された定数値、定数参照、および定数ポインターは変更できず、関数が実際のパラメーターの値やアドレスを変更することはできません。

以下では、コードの一部を使用して、定数値、定数参照、および定数ポインターを渡す特性を示します。

#include<iostream>
using namespace std;

//传常量值
void getValue(const int x){
    //x = 10;   //报错,无法改变常量值
    cout << "The value of x is: " << x << endl;
}

//传常量引用
void getNum(const int &x){
    //x = 10;   //报错,无法改变常量引用
    cout << "The value of x is: " << x << endl;
}

//传常量指针
void setNum(const int *x){
    //*x = 10;   //报错,无法改变常量指针
    cout << "The value of x is: " << *x << endl;
}

int main() {
    int num = 5;

    //传常量值
    getValue(num);

    //传常量引用
    getNum(num);

    //传常量指针
    const int *ptr = &num;
    setNum(ptr);

    system("pause");
    return 0;
}

プログラムを実行すると、出力は次のようになります。

出力結果から、定数値、定数参照、または定数ポインターのいずれを渡しても、実際のパラメーターの値は変更できないことがわかります。

まとめると、C 関数のパラメータの受け渡し方法には、値渡し、参照渡し、ポインタ渡しがあります。方法によって特性や適用シナリオが異なります。実際のプログラミング プロセスでは、これらに基づく必要があります。 on 実際の状況に応じて、適切なパラメータ転送方法を選択します。同時に、定数値、定数参照、定数ポインタの受け渡しも C 関数プログラミングでよく使用され、データの変更を防止し、プログラムの信頼性と安定性を向上させることができます。

以上がC++関数のパラメータ受け渡し方法の包括的解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。