C++関数のパラメータの詳細解説:ポインタ型別のパラメータの受け渡し方法の比較

WBOY
リリース: 2024-04-27 09:27:01
オリジナル
667 人が閲覧しました

C でポインター パラメーターを渡すには、値による受け渡し、参照による受け渡し、およびアドレスによる受け渡しの 3 つの方法があります。値によって渡すと、元のポインターに影響を与えずにポインターがコピーされます。参照によって渡すと、関数は元のポインターを変更できます。また、アドレスによって渡すと、関数はポインターが指す値を変更できます。ニーズに応じて適切なパラメータ送信方法を選択してください。

C++ 函数参数详解:不同指针类型的传参方式对比

#C 関数パラメータの詳細説明: 異なるポインタ型のパラメータ受け渡し方法の比較

関数パラメータ受け渡しは重要なメソッドですC では、関数呼び出しで値またはアドレスを渡すことを可能にする重要なプログラミング概念。ポインタ型の場合、C にはパラメータを渡すためのいくつかの異なる方法が用意されています。この記事では、実際のケースを通じてこれらの方法を詳しく比較します。

1. ポインター値の受け渡し

ポインター値を渡すための構文は

void foo(int* ptr); で、ポインターを効果的に転送します。 value to コピーが関数に渡されます。関数内でコピーを変更しても、元のポインターには影響しません。

#include <iostream>

void foo(int* ptr) {
    std::cout << *ptr << std::endl; // 输出:5
    *ptr = 10; // 仅修改函数内的副本
}

int main() {
    int num = 5;
    foo(&num); // 传递指针值
    std::cout << num << std::endl; // 输出:5,原始指针未修改
    return 0;
}
ログイン後にコピー

2. 参照によるポインター

ポインター参照を渡すための構文は

void foo(int*& ptr); です。関数に渡されます。関数内の参照を変更すると、元のポインターに影響します。

#include <iostream>

void foo(int*& ptr) {
    std::cout << *ptr << std::endl; // 输出:5
    *ptr = 10; // 修改原始指针
}

int main() {
    int num = 5;
    foo(&num); // 传递指针引用
    std::cout << num << std::endl; // 输出:10,原始指针已修改
    return 0;
}
ログイン後にコピー

3. アドレスへのポインター

ポインター アドレスを渡すための構文は

void foo(int** ptr); です。アドレスが関数に渡されます。関数内でアクセスできるのはポインターのみであり、ポインターが指す値に直接アクセスすることはできません。

#include <iostream>

void foo(int** ptr) {
    std::cout << *(*ptr) << std::endl; // 输出:5
    *(*ptr) = 10; // 修改指针指向的值
    *ptr = nullptr; // 指向另一个值
}

int main() {
    int num = 5;
    foo(&num); // 传递指针地址
    std::cout << num << std::endl; // 输出:10,指针指向的值已修改
    std::cout << *foo(&num) << std::endl; // 输出:0,指针指向另一个值
    return 0;
}
ログイン後にコピー

概要

ポインターから値へのコピー ポインターは、元のポインターには影響しません。参照によるポインターでは関数が元のポインターを変更できるのに対し、アドレスによるポインターでは関数がポインターが指す値を変更できます。特定のニーズに応じて、適切なパラメータ送信方法を選択することが重要です。

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

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