码迷,mamicode.com
首页 > 编程语言 > 详细

c++指针与引用问题

时间:2016-10-04 20:57:35      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

本来是回答问题的,到这里做个笔记

*&L是指针的引用,实参是个指针。所以L是实参指针的别名,对别名L的修改,等于对实参的修改。
*L是传值,你无法改变传过来的实参指针变量的值
程序代码:

#include<iostream>
using namespace std;
void foo(int*p);
int main()
{
    int a=5;
    int *b=&a;
    printf("%d %d\n",b,*b);
    foo(b);
    printf("%d %d",b,*b);
}
void foo(int* p)
{
    *p=*p+1;
    p=p+1;

}

输出为

技术分享
可以看成指针b没变,指针b保存的值变了
程序代码:

#include<iostream>
using namespace std;
void foo(int*&p);
int main()
{
    int a=5;
    int *b=&a;
    printf("%d %d\n",b,*b);
    foo(b);
    printf("%d %d",b,*b);
}
void foo(int*& p)
{
    *p=*p+1;
    p=p+1;

}

 技术分享

指针b和指针b保存的值都变了
下面是复制的。
这种技术很多用在比如定义一个安全删除指针的函数,所谓安全就是,只有当指针为零的时候才执行删除,删除之后,立刻把指针赋值为NULL。
template<typename T>
inline safe_delete(T*& ptr)
{
    if (ptr)
    {
        delete ptr;
        ptr = NULL;
    }
}
我用qt和vs中都发现定义的指针都是这种安全指针。
指针不为零,不让删。删了,如果再NULL也不行。

c++指针与引用问题

标签:

原文地址:http://www.cnblogs.com/dream-for/p/5930865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!