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函数,
只能改变内存的内容,对内存执行操作并不能改变指针所指向的地址。*/

运行结果:

最新文章

  1. destoon二次开发 操作数据库可运行示例
  2. Elasticsearch——禁止Body中的index覆盖Url中的index参数
  3. 深入理解计算机系统(1.2)---hello world的程序是如何运行的
  4. Redis:安装
  5. ajax 注意点
  6. Axis1.4之定制发布服务
  7. Github项目推荐-图神经网络(GNN)相关资源大列表
  8. Mybatis框架基础支持层——日志模块(8)
  9. jenkins使用教程之系统设置
  10. Multi-Database Transaction Demo
  11. javascript:addEventListener
  12. [nginx]location语法
  13. Error: Java heap space
  14. 流程图 --- BPMN规范简介
  15. laravel 使用 session
  16. CentOS 6.7 编译PHP7 make时出现错误:undefined reference to `libiconv_close’
  17. mysq配置
  18. cs108 03 ( 调试, java通用性)
  19. Axure RP 8 学习记录
  20. Qt-网络与通信-TCP版本聊天程序

热门文章

  1. ElasticSearch工作原理与优化
  2. 剑指offer-和为S的两个数字-知识迁移能力-python
  3. STM32F10xxx_启动模式
  4. Java---- 静态内部类与非静态内部类的区别
  5. react 中 css模块化类名 和普通全局类名 一起使用
  6. .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能
  7. 学习.NET中的AppDomain
  8. navicat for mysql 12 的破解安装和基本操作
  9. ldap搭建
  10. tornado实现高并发爬虫