你没有明白子函数的参数是怎么实现的
除了用&声明实参和形参公用一个内存空间外
其他的形式的函数,函数调用的时候是要另外申请内存空间的,也就是说是一个影子
他们不再一个内存空间中,那么函数改变了这个内存空间的内存,是不会改变主函数中变量占用的内存的内容的,真是很多新手在函数调用时遇到的困惑
用你的例子。我形象一下给你说明
假如啊
i占用内存地址为0001 j为0002
0001内容为3,0002内容为5
p占用内存地址为0003 q0004
0003内容为0001,0004内容为0002
这个你应该能明白,理解吧
那么调用函数的时候
a占用0005,b0006
0005内容为0001,0006内容为0002
这样应该理解吧
那么运行函数后,0005内容改为0002,0006内容改为0001
这样明白吧
接下来就是结果了,你改变了0005和0006的内容,但是打印的是0003和0004的内容
那么当然还是不变了,你说是不是啊
指针改变的道理是
void swap(int *a,int *b)
{
int t;
t=*a;*a=*b;*b=t;
}
这里的解释就是
*a的内容是3,*b的内容是5
那么交换指针指向的内存的内容的话,3 5就交换了
温馨提示:答案为网友推荐,仅供参考