C++入门经典-例5.19-指针的引用与传递参数
2024-10-21 14:39:26
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函数,
只能改变内存的内容,对内存执行操作并不能改变指针所指向的地址。*/
运行结果:
最新文章
- destoon二次开发 操作数据库可运行示例
- Elasticsearch——禁止Body中的index覆盖Url中的index参数
- 深入理解计算机系统(1.2)---hello world的程序是如何运行的
- Redis:安装
- ajax 注意点
- Axis1.4之定制发布服务
- Github项目推荐-图神经网络(GNN)相关资源大列表
- Mybatis框架基础支持层——日志模块(8)
- jenkins使用教程之系统设置
- Multi-Database Transaction Demo
- javascript:addEventListener
- [nginx]location语法
- Error: Java heap space
- 流程图 --- BPMN规范简介
- laravel 使用 session
- CentOS 6.7 编译PHP7 make时出现错误:undefined reference to `libiconv_close’
- mysq配置
- cs108 03 ( 调试, java通用性)
- Axure RP 8 学习记录
- Qt-网络与通信-TCP版本聊天程序