区别:

1、指针传参被调用函数的指针变量在栈内存中重新申请内存。

2、指针引用传参被调用函数的指针变量与调用函数的指针变量共用一块空间。

// PointerCite.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
using namespace std;
void freePtr1(int* p1){
/*未释放内存前 -> p1 Address : 0012FDDC p1 value : 003429B8,
在这里,p1它也是一个变量,既然是一个变量,
那么它将会以值的传递,把外部变量p1传到栈内,在栈内产生一个地址:0012FDDC,
当然,它的值不会变仍然是指向堆地址:003429B8 。*/
delete p1; //系统回收p1值的地址003429B8处的内存。
p1 = NULL;//对p1赋以NULL值即:00000000,注意:p1本身的地址并没有变,变的是p1的值。
//释放内存后 -> p1 Address : 0012FDDC p1 value : 00000000
//,出栈后,p1由于是一个临时对象,出栈后它会自动被视为无效。
}
void freePtr2(int*& p2) {
/*未释放内存前 -> p2 Address : 0012FEC8 p2 value : 003429B8,
p2是一个指针的引用,即引用指向指针,
记住引用的特点:对引用的对象直接操作。所以它的地址和值与栈外的main()函数中,p2的值是同一个。*/
delete p2; //对p2所引用的指针进行释放内存,即:系统回收main()函数中 p2的值 003429B8 地址处的内存。
p2 = NULL;//对main()函数中p2的指针赋以NULL值。
//释放内存后 -> p2 Address : 0012FEC8 p2 value : 00000000,
//由于操作的对象都是main()函数中的p2,所以它将应用到原变量中。
}
int main(){
int *p1 = new int [];
//释放内存前-> p1 Address : 0012FED4 p1 value : 003429B8
freePtr1(p1);
//释放内存后-> p1 Address : 0012FED4 p1 value : 003429B8
int *p2 = new int [];
//释放内存前-> p2 Address : 0012FEC8 p2 value : 003429B8
freePtr2(p2);//*&的情况.
//释放内存后-> p2 Address : 0012FEC8 p2 value : 00000000
}

C++函数形参为指针和指针引用的区别的更多相关文章

  1. C++函数传指针和传引用的区别

    从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有 ...

  2. C++ 函数形参发生动态绑定时指针增长步长与静态类型一致

    牛客网上的题: class A { public: long a; }; class B : public A { public: long b; }; void seta1(A* data, int ...

  3. c++中函数参数传递(值传递、指针传递,引用传递)进一步认识

    概念    首先从概念上来说一下这几种函数传参方式及区别:    1.值传递:形参是实参的拷贝,改变函数形参的值并不会影响外部实参的值,这是最常用的一种传参方法,也是最简单的一种传参方法,只需要传递参 ...

  4. C/C++ 函数参数传递:传值,传指针,传引用

    前面我们介绍了函数的调用约定,明白了函数调用者与被调用者之间传递参数的顺序与如何进行栈恢复的. 实际上,函数调用者如何将参数传递给被调用者也是有讲究的. 总的来说,函数参数传递分为3种情况:传值,传指 ...

  5. C++面试常见问题——15函数的值传递、指针传递、引用传递

    函数的值传递.指针传递.引用传递 值传递 形参是实参的拷贝,该表形参的值并不会影响外部的实参.值传递是单向的(实参-->形参),参数的值只能传入,不能传出.当函数内部需要修改参数并且不影响调用者 ...

  6. 函数返回值为 const 指针、const 引用

    函数返回值为 const 指针,可以使得外部在得到这个指针后,不能修改其指向的内容.返回值为 const 引用同理. class CString { private: char* str; publi ...

  7. 《征服 C 指针》摘录5:函数形参 和 空的下标运算符[]

    一.函数的形参的声明 C 语言可以像下面这样声明函数的形参: void func(int a[]) {     // ... } 对于这种写法,无论怎么看都好像要向函数的参数传递数组. 可是,在 C ...

  8. 关于strcpy函数形参类型的解析和指针作为输入型输出型参数的不同

    在C语言中,字符串一直都是热点,关于strcpy函数大家都很熟悉,但是真正了解的很少,一旦用到总会报一大堆莫名其妙错误,今天我就来给大家详细剖析一下strcpy函数. 虽然不能看到strcpy的内部实 ...

  9. [C++]数组指针,数组引用,函数指针

    数组指针是指一个指向数组的指针,例如有一个数组指针p指向一个数组a[],则 *p是取到这个数组,也就是说 *p=a,因此 **p =a[0], 它的定义为: ]; ]=&a; (*c)表示它是 ...

随机推荐

  1. Spring AOP schema找不到报错 原

    转自:https://my.oschina.net/zetaplusae/blog/144821 使用jersey+spring构建RESTful服务,并将应用部署在不能连接外网的服务器上.部署时,报 ...

  2. android:singleLine="true" 的意思(转载)

    转自:http://blog.sina.com.cn/s/blog_72fad6270100tq0n.html 设置单行显示.如果和layout_width一起使用,当文本不能全部显示时,后面用“…” ...

  3. ORACLE PL/SQL 实例精解之第二章 通用编程语言基础

    通用编程语言基础 2.1PL/SQL编程基础 1. 字符类型:支持四中类型字符:字母,数字,符号和空格,组合一个或多个字符就会创建一个词汇单元 2. 词汇单元 a.标识符必须以字符开头 b.保留字是p ...

  4. hdoj1176【DP】

    DP基础吧.A掉还是挺爽的.就是考虑在两端只能是从前一秒的内部一米或原来的点来进行,但是在5秒以内可到达点是逐渐外扩的,并不是[0,10],所以就特殊考虑了一下.后面两端是0和10,中间的点可以从上一 ...

  5. WPF 加载 WINFORM控件 异常: 调度程序进程已挂起,但消息仍在处理中

    在加载TradeAtServer的统计中的 单个合约盈亏情况 异常:,调度程序进程已挂起,但消息仍在处理中 发现可能是属性设置引发的问题 比如DateTimePikcer.Value+= set, g ...

  6. Codeforces Round #418 (Div. 2) A

    Description A few years ago, Hitagi encountered a giant crab, who stole the whole of her body weight ...

  7. 模拟+贪心 URAL 1804 The Machinegunners in a Playoff

    题目传送门 题意:A队和B队踢球,已知一场比赛A和B的得分情况,问A最小再得几分就能胜利还有最多能的几分还能给B队一丝翻盘的希望.规则如下: 1. 总分数相等的情况下,在客场得分高的获胜,如果还相等, ...

  8. linux下使用svn创建版本库和权限管理

    linux上的svn服务端如何和本地的电脑客户端结合使用 Linux上安装SVN服务器: 第一步:检查是否已安装 # rpm -qa subversion 第二步: 通过yum命令安装svnserve ...

  9. python_13(前端—cs)

    第1章 前端三大标准:1.1 三大标准介绍 1.2 html标签一览表 第2章 结构标准 html 2.1 html结构 2.2 html常用标签 2.2.1 h1-h6 2.2.2 span 2.2 ...

  10. Spring------自动化装配Bean(一)

    一.创建 CompactDisc接口和SgetPeppers实现类 CompactDisc接口方法为播放.SgtPeppers实现CompactDisc接口. package soundsystem; ...