1:引用传递参数与指针传递参数能达到同样的目的。指针传递参数也属于一种值传递,其传递的是指针变量的副本。如果使用指针的引用,就可以达到在函数体内改变指针地址的目的。运行代码如下:

// 5.19.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;
static int global=;//静态全局变量
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 = ;//global较大
*pI2 = ; //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 ;
}
/*getMax函数通过传递指针的引用改变了指针的地址,指针pI1的地址最终指向了全局变量。而通过按值传递指针的getMin函数,
只能改变内存的内容,对内存执行操作并不能改变指针所指向的地址。*/

运行结果:

C++入门经典-例5.19-指针的引用与传递参数的更多相关文章

  1. C++入门经典-例7.6-this指针,同一个类的不同对象数据

    1:对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的.那么调用共享的成员函数如何找到自己的数据成员呢?答案是通过类中隐藏的this指针. 2 ...

  2. C++入门经典-例5.7-调用自定义函数交换两变量值,传入指针

    1:代码如下: // 5.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  3. C++入门经典-例8.7-多态,利用虚函数实现动态绑定

    1:多态性是面向对象程序设计的一个重要特征,利用多态性可以设计和实现一个易于扩展的系统.在C++语言中,多态是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数,发出同样 ...

  4. C++入门经典-例7.5-对象的指针,函数指针调用类成员

    1:指向相应对象的指针就是对象的指针,它的生明方法与其他类型一样,如下: 类名 *p; 类的指针可以调用它所指向对象的成员.形式如下: p->类成员; 2:代码如下: (1)cat.h #inc ...

  5. C++入门经典-例6.14-通过指针连接两个字符数组

    1:字符数组是一个一维数组,引用字符数组的指针为字符指针,字符指针就是指向字符型内存空间的指针变量. char *p; char *string="www.mingri.book" ...

  6. C++入门经典-例6.9-通过指针变量获取数组中的元素

    1:通过指针引用数组,需要先声明一个数组,再声明一个指针. int a[10]; int *p; 然后通过&运算符获取数组中元素的地址,再将地址值赋给指针变量. p=&a[0]; 代码 ...

  7. C++入门经典-例5.9-使用空类型指针执行函数

    1:运行代码: // 5.9.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  8. C++入门经典-例5.8-使用指针函数进行运算

    1:函数指针式指向函数内存的指针,一个函数在编译时被分配给一个入口地址,这个函数的入口地址就称为函数指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数. 一个函数可以返回一个整数型值.字符 ...

  9. C++入门经典-例5.5-空类型指针的使用

    1:代码如下: // 5.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

随机推荐

  1. 使用jdbc操作ClickHouse

    使用jdbc操作ClickHouse 2018年07月01日 01:33:00 狮子头儿 阅读数 10501   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处 ...

  2. 使用curl访问https

    在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.然而在使用cr ...

  3. 如何使用sftp下载Linux服务器上的文件到本地

    下载Linux服务器上的文件到本地 Linux服务器上的操作 sftp xxxxx@jumper.xxxx.com 使用put命令进行文件上传,put app.log 本地操作 sftp xxxxx@ ...

  4. js 条件方法、数组方法

    经常写代码写的很多很累赘,看看下面例子,争取以后代码简洁简化.个人也觉得简洁分明的代码很重要. 本文来自另一篇博客:https://www.cnblogs.com/ljx20180807/p/1084 ...

  5. access注入

    前面有自己总结详细的mysql注入,自己access注入碰到的比较少,虽然比较简单,但是这里做一个总结 union联合查询法: 因为union前后字段数相同,所以可以先用order by 22 使查询 ...

  6. 转载:Cesium的Property机制总结

    转自:https://www.jianshu.com/p/f0b47997224c 前言 Cesium官方教程中有一篇叫<空间数据可视化>(Visualizing Spatial Data ...

  7. macOS安装Python MySQLdb

    macOS安装Python MySQLdb 0. 参考 Mac OS X - EnvironmentError: mysql_config not found 1. 背景 import MySQLdb ...

  8. linux发行版及版本号

    1991年8月:Linus Torvalds宣布成立Linux            遵行GPL: Kernel:底层监控程序又叫通用程序,即我们所说的操作系统    Kernel的作用:       ...

  9. Jmeter Beanshell 编程简介

    简介 Jmeter除了提供丰富的组件以外,还提供脚本支持,可通过编写脚本来丰富Jmeter,实现普通组件无法完成的功能.Beanshell是一种轻量级的Java脚本语言,完全符合Java规范,并且内置 ...

  10. 测试数年来,我只提了几十个bug

    ---恢复内容开始--- 测试做了十来年,大大小小的项目产品已经记不清了,开发们在一如既往地改着改了无数遍的bug,测试也一如既往的提着提了无数遍的bug,那么今天笔者对以往的bug类型做一个简单的总 ...