zoukankan      html  css  js  c++  java
  • 指针拷贝与值的传递

    C永远有着那么多你所不知道的东西,最近在Coding的时候,发现对于指针,我还是没有琢磨好。

    碰到这么一个问题,看代码如下:

    View Code
     1 int a;
     2 
     3 address(int *m)
     4 {
     5       m = &a;
     6 }
     7 
     8 main()
     9 {
    10        int *p;
    11 
    12        address(p);
    13 }

    这里只是为说明问题,将代码简化了,上面的代码有很大的问题,在main函数中,将指针做为实参传递给形参,这样可以吗?很显然,这是不可以的,这样传递的只是实参的一个拷贝而已,真正的实参并没有传递过去,所以,address调用完毕以后,对p没有任何的影响。当然,在做值传递的时候,大家也可以想到,其实值的传递也只是一个拷贝而已。

    那么正确的代码应该是怎样的呢?请看下面的代码:

    1.可以直接return一个地址,但这样只能传递一个参数。

    2.用引用,比较推荐这种方法,请看

    address(int **m)
    {
          *m = &a;
    }

    调用的时候,address(&p)就可以了。

    为了说明问题,画一内存图,便于理解。

  • 相关阅读:
    jq绑定on事件无效
    数字以0补全
    redis常用操作
    mysql数据操作日常
    centos端口映射
    centos7防火墙操作
    mysql5.7order by问题
    centos无法上网解决方法
    面试题
    ztree 获取子节点所有父节点的name的拼接
  • 原文地址:https://www.cnblogs.com/dylan2011/p/2688505.html
Copyright © 2011-2022 走看看