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)就可以了。

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

  • 相关阅读:
    struts2笔记之if控制标签
    struts2标签之iterator遍历集合
    struts2获得session和request
    数据库操作语句
    weixinapp api
    struts2笔记之tree标签输出树
    struts2笔记之整合Tiles
    C++中的符号
    JSP布局相关使用
    5.Github仓库
  • 原文地址:https://www.cnblogs.com/dylan2011/p/2688505.html
Copyright © 2011-2022 走看看