+ -
当前位置:首页 → 问答吧 → 对C++中的引用还不是太明白,希望各位大牛给讲讲

对C++中的引用还不是太明白,希望各位大牛给讲讲

时间:2011-12-09

来源:互联网

C/C++ code

#include<iostream>

void f(int &ab);

int main()
{
  int b = 1;
  int &ab = b;
  f(&ab);
}

void f(int &ab)
{
  ab = 2;
}




C/C++ code


#include<iostream>

void f(int *p);

int main()
{
  int b = 1;
  int *pb = &b;
  f(pb);
}

void f(int *a)
{
  *a = 2;
}




这是两个例子,我不明白为什么说引用比指针安全。。。

作者: liuyang9duan   发布时间: 2011-12-09

引用就是就是起个“别名”,其实就是同一个存储空间对应两个变量名而已。
而指针变量和指针所指向的空间不是一回事,在使用指针时,如果没有初始化,或者操作不当,很容易将它指向非法的地址空间,这样你通过指针修改空间的值时,可能会出现内存非法访问,就是Windows下弹出“.exe程序已终止”的对话框。

作者: nuaazdh   发布时间: 2011-12-09

表示我也不怎么看得懂你上面的算法- -.

作者: q592281095   发布时间: 2011-12-09

引用 2 楼 q592281095 的回复:

表示我也不怎么看得懂你上面的算法- -.


因为根本就没有什么算法,就是把原来的1改成2

作者: liuyang9duan   发布时间: 2011-12-09

引用比指针安全是因为指针可以什么都不指向,访问一个空指针程序会崩溃,而引用在定义的时候必须初始化,必定是所有指的。

作者: tonywearme   发布时间: 2011-12-09

一个函数(不是你写的)可能把你传进去的指针delete掉……如果你没发现,继续用那指针的话,嘿嘿……
用引用没这种风险

作者: mstlq   发布时间: 2011-12-09

引用 3 楼 liuyang9duan 的回复:
引用 2 楼 q592281095 的回复:

表示我也不怎么看得懂你上面的算法- -.


因为根本就没有什么算法,就是把原来的1改成2

可是我用VC的时候。都是错误的- -。

作者: q592281095   发布时间: 2011-12-09

引用比指针安全就在于引用只能操作数据本身,而不能像指针那样操作内存。

作者: W170532934   发布时间: 2011-12-09