传指针和传指针引用的区别/指针和引用的区别(

 我来答
_277282419
2017-03-22 · TA获得超过631个赞
知道小有建树答主
回答量:227
采纳率:100%
帮助的人:128万
展开全部
  1. 指针:(通俗理解即为一个变量在内存中的编号(地址))

    1. 例1:int b = 2;

      int *p = &b;

        1. 以上例子就是将b变量在内存中的地址赋值给这个指针变量p, 意味着p的值就是变量b的地址。 

  2. 指针变量:自己的值(指针变量本身的内容)是某个变量的地址

    1. 例1中的p就是指针变量

  3. 变量值:变量本身在内存中一定单元中bit组合的数据表示

    1. 变量值就是该变量本身的值例1中的b的变量值就是2,p的变量值就是(b的地址)

  4. 变量地址:即使指针(指针就是一个地址,地址就是指针)

    1. 例1中的p的值就是变量地址,  例1中:&b也是变量地址,&为取地址符号



在明白上面的每个概念后那么你的问题“传指针和传指针引用的区别/指针和引用的区别”就好回答了。

传指针:就是将例1中的p或者&b作为一个函数的实参发送给形参

传指针引用:就是把例1中的指针变量p(即使&p)的地址作为一个函数的实参。

注意上面的&p你会问这个什么意思? 你应该只是&为取地址运算符号。被&运算的对象必然是一个变量,那么你要明白一件事情我没在例1中写(&b )你应该明白把变量b的地址取出来,那么(&p)也是一样的道理,对没有错就是取出指针变量p的地址, 切记哦指针变量也是变量哦! 它和普通的变量没什么区别,只不过它是用来保存某个变量的地址罢了。你看例1中的int *p = &b  可不就是把一个普通的int类型的变量的地址赋值给p指针变量了么。



那么关键问题就是“传指针传指针引用的区别”

本质上没有区别,  

还是在例1的基础上加上以下代码:

函数1:void fun1(int *p)//这里写*p就是说这个形参值接受一个int类型变量的地址
        {
            

        }
      
      

函数2:void fun2(int **p) 
        {
            int q = 3;
            

        }

下面我们用指针传递 调用这个fun1函数:

void fun1(&b);//
调用后b的值变成了1



下面我们用指针引用传递 调用这个fun2函数:

void fun2(&p);//这里写&p意味着被调用函数是应该是接受一个【指针变量】的地址的(即传指针引用)

调用后p的值变成了某个变量的地址



好了总结一下:

  • 指针传递:发送了一个变量的地址, 接受这个地址的函数可以利用这个地址找到这个变       量进行操作。

  • 指针引用传递:发送了一个指针变量的地址, 接受这个指针变量地址的函数可以利用这个地址找到这个指针变量进行操作。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式