標籤:目的 clu .com http max image oid static main
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-指標的引用與傳遞參數