>  기사  >  백엔드 개발  >  C++ 함수 매개변수에 대한 자세한 설명: 다양한 포인터 유형의 매개변수 전달 방법 비교

C++ 함수 매개변수에 대한 자세한 설명: 다양한 포인터 유형의 매개변수 전달 방법 비교

WBOY
WBOY원래의
2024-04-27 09:27:01626검색

C++에서 포인터 매개변수를 전달하는 방법에는 값 전달, 참조 전달, 주소 전달의 세 가지 방법이 있습니다. 값으로 전달하면 원래 포인터에 영향을 주지 않고 포인터가 복사됩니다. 참조로 전달하면 함수가 원래 포인터를 수정할 수 있습니다. 필요에 따라 적절한 매개변수 전송 방법을 선택하십시오.

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

C++ 함수 매개변수에 대한 자세한 설명: 다양한 포인터 유형의 매개변수 전달 방법 비교

함수 매개변수 전달은 C++에서 중요한 프로그래밍 개념으로, 함수가 호출될 때 값이나 주소가 전달되도록 합니다. 라고 불리는. 포인터 유형의 경우 C++에서는 매개변수를 전달하는 여러 가지 방법을 제공합니다. 이 기사에서는 실제 사례를 통해 이러한 방법을 자세히 비교할 것입니다.

1. 값별 포인터

포인터 값을 전달하는 구문은 void foo(int* ptr);이며, 이는 포인터의 복사본을 함수에 효과적으로 전달합니다. 함수 내의 복사본을 수정해도 원본 포인터에는 영향을 주지 않습니다. 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. 참조에 의한 포인터

포인터 참조를 전달하는 구문은 포인터 참조를 함수에 전달하는 void foo(int*& ptr);입니다. 함수 내의 참조를 수정하면 원래 포인터에 영향을 미칩니다.

rrreee

🎜3. 주소에 대한 포인터 🎜🎜🎜포인터 주소를 전달하는 구문은 포인터의 주소를 함수에 전달하는 void foo(int** ptr);입니다. 함수 내에서는 포인터에만 접근할 수 있으며 포인터가 가리키는 값에는 직접 접근할 수 없습니다. 🎜rrreee🎜🎜요약🎜🎜🎜포인터-값 복사 포인터는 원래 포인터에 영향을 주지 않습니다. 참조에 의한 포인터는 원래 포인터를 수정하는 함수를 허용하는 반면, 주소에 의한 포인터는 포인터가 가리키는 값을 수정하는 함수를 허용합니다. 특정 요구에 따라 적절한 매개변수 전송 방법을 선택하는 것이 중요합니다. 🎜

위 내용은 C++ 함수 매개변수에 대한 자세한 설명: 다양한 포인터 유형의 매개변수 전달 방법 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.