亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類 & 對象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊

C++ 指針和函數(shù)

在本文中,您將學(xué)習(xí)將指針作為函數(shù)的參數(shù)傳遞,并在程序中有效地使用它。

C ++函數(shù)文章中,您了解了有關(guān)將參數(shù)傳遞給函數(shù)的知識。因為傳遞了實際值,所以使用的此方法稱為按值傳遞。

但是,還有另一種方法可以將參數(shù)傳遞給一個函數(shù),在這種方法中不傳遞參數(shù)的實際值。相反,只傳遞對該值的引用。

示例1:不帶指針的引用傳遞

#include <iostream>
using namespace std;

// 函數(shù)原型
void swap(int&, int&);

int main()
{
    int a = 11, b = 22;
    cout << "交換之前" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    swap(a, b);

    cout << "\n交換之后" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    return 0;
}

void swap(int& n1, int& n2) {
    int temp;
    temp = n1;
    n1 = n2;
    n2 = temp;
}

輸出結(jié)果

交換之前
a = 11
b = 22

交換之后
a = 22
b = 11

在main()函數(shù)中,定義了兩個整數(shù)變量a和b。這些整數(shù)通過引用傳遞給swap()函數(shù)。

編譯器可以識別出這是通過引用傳遞的,因為函數(shù)定義是void swap(int& n1, int& n2)(請注意數(shù)據(jù)類型后的符號)。

在swap()函數(shù)中僅接收變量a和b的引用(地址),并且交換發(fā)生在變量的原始地址中。

在swap()函數(shù)中,n1和n2是形式參數(shù),實際上分別與變量a和b相同。

還有另一種使用指針完成相同任務(wù)的方法。

示例2:使用指針傳遞引用

#include <iostream>
using namespace std;

// 函數(shù)原型
void swap(int*, int*);

int main()
{
    int a = 1, b = 2;
    cout << "交換之前" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    swap(&a, &b);

    cout << "\n交換之后" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    return 0;
}

void swap(int* n1, int* n2) {
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

此示例的輸出與之前的輸出結(jié)果相同。

在這種情況下,變量的地址是在函數(shù)調(diào)用期間傳遞的,而不是變量本身。

swap(&a, &b); // &a是a的地址,&b是b的地址

由于傳遞的是地址而不是值,因此必須使用解引用運算符來訪問存儲在該地址中的值。

void swap(int* n1, int* n2) { 
 ... .. ...
}

* n1和* n2分別給出存儲在地址n1和n2處的值。

由于n1包含a的地址,因此對* n1所做的任何事情也會改變main()函數(shù)中a的值。 類似地,b將具有與* n2相同的值。