Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91507
  • 博文数量: 16
  • 博客积分: 367
  • 博客等级: 一等列兵
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-25 22:37
文章分类

全部博文(16)

文章存档

2012年(4)

2011年(12)

我的朋友

分类: LINUX

2011-11-06 17:50:44

考虑一个把复数实部和虚部分开的函数:
     void decompose(double x, long int_part, double frac_part)
    {
       int_part = (long) x;
       frac_part = x - int _part;
    }
采用这种写法,如果调用函数decompose(3.14, i, d);时,函数是值传递,函数内的预计把3赋值给int_part,把.14赋给frac_part。接着函数返回,可是变量i,d的值不会因为int_part和frac_part的赋值而受到影响,所以他们在函数前后调用的值完全一样,这就没有达到编写函数把复数实部和虚部分开的目的。
   稍微修改下程序用指针的话:
    void decompose(double x, long *int_part, double *frac_part)
    {
       *int_part = (long) x;
       *frac_part = x - *int _part;
    }
调用函数:decompose(3.14, &i, &d);,则decompose函数第一个赋值吧x转化成long类型,并且吧值存储在int_part指向的对象中,而int_part指向i,所以把3放到i中;同理d有值.14。那么当decompose函数返回的时候,i和d就有了希望的值3和0.14。
 
仔细对比二者的区别,可以发现,指针实际上提供的作用就是一个访问变量地址的“钥匙”,只要它指向那个变量,我们就可以通过指针,把那个变量最新的值取出来。或者说它提供了形参和实参映射的桥梁。正如其名字,“指针”,一旦指了,联系就建立。而它们实际发生联系的地方,也就是硬件——内存了
阅读(1569) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

sunny_piza2011-11-07 09:20:50


传地址调用, 最大的好处在于,可以在函数内部对地址里存放的值进行修改。
传值调用,只能作为常量处理,不能修改值的内容。