考虑一个把复数实部和虚部分开的函数:
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) |