zoukankan      html  css  js  c++  java
  • C++入门经典-例5.19-指针的引用与传递参数

    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

    运行结果:

  • 相关阅读:
    Configuring Squid as an accelerator/SSL offload for Outlook Web Access
    Cisco ASA 5505 Routing Between Two (Internal) VLANS
    Windows共享设定-使用net use添加网络盘带上账号密码
    CSS介绍
    HTML的介绍
    python之IO model
    python之并发编程(线程进程协程)
    python之socket编程
    python之面向对象编程二
    python之面向对象编程一
  • 原文地址:https://www.cnblogs.com/lovemi93/p/7529965.html
Copyright © 2011-2022 走看看