码迷,mamicode.com
首页 > 编程语言 > 详细

C++入门经典-例5.19-指针的引用与传递参数

时间:2017-09-16 12:03:01      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:目的   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-指针的引用与传递参数

标签:目的   clu   .com   http   max   image   oid   static   main   

原文地址:http://www.cnblogs.com/lovemi93/p/7529965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!