Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang parameter fungsi C++: Perbandingan kaedah lulus parameter bagi jenis penunjuk yang berbeza

Penjelasan terperinci tentang parameter fungsi C++: Perbandingan kaedah lulus parameter bagi jenis penunjuk yang berbeza

WBOY
WBOYasal
2024-04-27 09:27:01668semak imbas

Terdapat tiga cara untuk menghantar parameter penunjuk dalam C++: lulus mengikut nilai, lulus melalui rujukan dan lulus melalui alamat. Melepasi nilai menyalin penunjuk tanpa menjejaskan penunjuk asal melalui rujukan membolehkan fungsi mengubah suai penunjuk asal melalui alamat membolehkan fungsi mengubah suai nilai yang ditunjukkan oleh penunjuk. Pilih kaedah penghantaran parameter yang sesuai mengikut keperluan anda.

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

Penjelasan terperinci tentang parameter fungsi C++: Perbandingan kaedah lulus parameter bagi jenis penunjuk yang berbeza

Pengalihan parameter fungsi ialah konsep pengaturcaraan penting dalam C++, yang membolehkan nilai atau alamat dihantar apabila fungsi dipanggil. Untuk jenis penunjuk, C++ menyediakan beberapa kaedah yang berbeza untuk menghantar parameter Artikel ini akan membandingkan kaedah ini secara terperinci melalui kes praktikal.

1. Penunjuk mengikut nilai

Sintaks untuk menghantar nilai penuding ialah void foo(int* ptr);, yang secara berkesan menghantar salinan penuding ke fungsi. Pengubahsuaian kepada salinan dalam fungsi tidak menjejaskan penunjuk asal. 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; // 输出: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;
}

2 Penunjuk mengikut rujukan

Sintaks untuk menghantar rujukan penuding ialah void foo(int*& ptr);, yang menghantar rujukan penuding kepada fungsi. Pengubahsuaian kepada rujukan dalam fungsi akan menjejaskan penunjuk asal.

rrreee

🎜3 Penunjuk ke alamat 🎜🎜🎜Sintaks untuk menghantar alamat penuding ialah void foo(int** ptr);, yang menghantar alamat penuding ke fungsi. Hanya penunjuk boleh diakses dalam fungsi, dan nilai yang ditunjukkan tidak boleh diakses secara langsung. 🎜rrreee🎜🎜Ringkasan🎜🎜🎜Penuding salinan penuding ke nilai tidak menjejaskan penuding asal. Penunjuk dengan rujukan membolehkan fungsi mengubah suai penunjuk asal, manakala penunjuk dengan alamat membenarkan fungsi mengubah suai nilai yang ditunjukkan oleh penunjuk. Adalah penting untuk memilih kaedah penghantaran parameter yang sesuai mengikut keperluan khusus. 🎜

Atas ialah kandungan terperinci Penjelasan terperinci tentang parameter fungsi C++: Perbandingan kaedah lulus parameter bagi jenis penunjuk yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn