the significance of pointer解决思路
the significance of pointervoid swap(int x, int y)/*version 1 without using the pointer*/{int temp
the significance of pointer
void swap(int x, int y) /*version 1 without using the pointer*/
{
int temp;
temp = x;
x = y;
y = temp;
}
void swap(int *px, int *py) /*version 2 using the pointer*/
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}
书上介绍使用pointer的意义的时候拿这两个版本做对比,说version 1不能够影响“the arguments a and b in the routine that called it" 这句话不是太懂,难道version 1里不是把x和y的值给交换了吗?这还不叫影响吗?
相对而言,我觉得version 2的功效和和version 1是一样的啊,都是把x,y值给互换了,为什么version 2就算是好的呢?
我们为什么要用pointer呢?
各位给点看法。。。
[解决办法]形参x是临时变量、、是swap被调用时临时生成的,不是x1,他们所存的值相同而已,他们是不同的内存地址空间。
当然如果你看一下函数调用时的汇编代码,就知道形参x和y是在调用swap前入栈,而x1和y1在这之前早就建立了,,
[解决办法]
新手 要弄清楚 传的是地址还是值
地址和值的 区别
int a = 10;
// a = 10;// 这是在内存中需要内存空间来保存的,
//计算机就是通过内存空间地址对它进行操作的, 也就是&a ,标识它的地址
//当你直接传值的话,相当于拷贝了一份值出来,
//这个时候拷贝的一份值,也有自己的内存地址的,所以不会对原来的数本身进行操作的