1. 程式人生 > >C++入門經典-例5.19-指針的引用與傳遞參數

C++入門經典-例5.19-指針的引用與傳遞參數

del pen blog ati 分配 close sin 動態 mage

1:引用傳遞參數與指針傳遞參數能達到同樣的目的。指針傳遞參數也屬於一種值傳遞,其傳遞的是指針變量的副本。如果使用指針的引用,就可以達到在函數體內改變指針地址的目的。運行代碼如下:

技術分享
// 5.19.cpp : 定義控制臺應用程序的入口點。
//

#include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;
static int global=16;//靜態全局變量
 void getMax(int* &p)//指針的引用
{
    if(*p<global)
    {
        delete
p;//釋放內存。 p = &global;//相當於pI1的引用改變了 } } void getMin(int *p) { if(*p>global) { delete p;//釋放了pI2所指向的內存 p = &global;//副本值改變了,pI2無變化 } } int main() { int* pI1 = new int;//動態分配一個地址 int* pI2 = new int; cout<<"pI1指向的地址:"<<pI1<<endl; cout
<<"pI2指向的地址:"<<pI2<<endl; *pI1 = 15;//global較大 *pI2 = 18; //global較小 cout<<"全局變量global的地址:"<<&global<<endl; cout<<"將pI1與pI2分別帶入getMax與getMin函數"<<endl; getMax(pI1); getMin(pI2); cout<<"pI1指向的地址:"<<pI1<<endl; cout
<<"pI2指向的地址:"<<pI2<<endl; cout<<"*pI1的值:"<<*pI1<<endl; cout<<"*pI2的值:"<<*pI2<<endl; return 0; } /*getMax函數通過傳遞指針的引用改變了指針的地址,指針pI1的地址最終指向了全局變量。而通過按值傳遞指針的getMin函數, 只能改變內存的內容,對內存執行操作並不能改變指針所指向的地址。*/
View Code

運行結果:

技術分享

C++入門經典-例5.19-指針的引用與傳遞參數