20140712 合并有序数组

1、合并有序数组

A(空间足够):1 2 5 9 12 14

B:3 6 7 9 17 18

imageimage

2、为什么函数的实参传入指针可以修改值,直接传入值却不能

int f(int a, int b){a=5;b=6;}
void main()
{
    int x, int y;
    f(x, y);
}
a、b是形参,x和y是实参

三种传参方式:http://blog.csdn.net/winson_jason/article/details/7271918

1:以实参的副本形式。
    这种方式最容易理解,就是很多教程上所说的值传递。把实参的值复制给形参创建的局部对象。函数对形参做的改变不会影响到实参,因为他们是不同的对象。在讨论一下这种情况下的const。因为形参和实参是不同的对象,唯一的联系只是调用时的值传递,所以形参和实参的const修饰没有限制。常量也可以做为实参调用。但是声明为const的形参,只能引用,不能改变他的值。

2:以指针传送地址的形式。

      引用其实就是引用该变量的地址,“解”就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为“解引用”

    指针所以传递的是地址。也就是说实参向形参传递的是实参所指向对象(这里的对象是否可以理解成内存)的地址。既然这样,形参在函数中解引用所改变的值,同时也改变了实参所指向对象的值,因为他们本身就是指向一个地址,即同一个对象。但因为函数调用所创建的局部形参指针,它也是实参指针的副本,所以当改变形参的指针值(即指向另一个对象)实参是没有随之改变的。
3:以引用形式,即和实参的对象相关联。
    引用是c++中才能见到的知识点。引用大家都很清楚是一个对象的别名,也就是说把引用名和一个对象相关联,他们是同一块内存空间的名字。既然这样。当形参定义成引用时很容易就能理解为什么函数中对引用的改变同时也是对实参的改变。

posted @ 2014-07-12 00:32  yexuannan  阅读(180)  评论(0编辑  收藏  举报