书画院网站模板,域名对网站的影响,网站增加栏目后面要怎么做,个人邮箱注册申请目录 一、前言二、传值调用。三、传址调用四、总结 一、前言
学习指针的目的是使用指针解决问题#xff0c;那什么问题#xff0c;非指针不可呢#xff1f;
二、传值调用。
写个函数#xff0c;交换两个整数的内容。
#includestdio.h
void Swap1(int x, int y)… 目录 一、前言二、传值调用。三、传址调用四、总结 一、前言
学习指针的目的是使用指针解决问题那什么问题非指针不可呢
二、传值调用。
写个函数交换两个整数的内容。
#includestdio.h
void Swap1(int x, int y)
{int temp x;x y;y temp;
}
int main()
{int a 10;int b 20;printf(交换前a%d b%d\n, a, b);Swap1(a, b);printf(交换后a%d b%d\n, a, b);return 0;
}运行结果 我们发现其实没产生交换的效果这是为什么呢 我们调试一下看看 我们发现在main函数内部创建了a和ba的地址是0x00000079b38ff8c4b的地址是0x00000079b38ff8e4在调用Swap1函数时将a和b传递给了Swap1函数在Swap1函数内部创建了形参x和y接收a和b的值但是x的地址是0x00000079b38ff8a0y的地址是0x00000079b38ff8a8x和y确实接收到了a和b的值不过x的地址和a的地址不⼀样y的地址和b的地址不⼀样相当于x和y是独⽴的空间那么在Swap1函数内部交换x和y的值自然不会影响a和b当Swap1函数调用结束后回到main函数a和b的没法交换。Swap1函数在使用的时候是把变量本身直接传递给了函数这种调用函数的方式叫传值调用。 结论实参传递给形参的时候形参会单独创建⼀份临时空间来接收实参对形参的修改不影响实参。 所以Swap1是失败的了。
三、传址调用
我们现在要解决的就是当调用Swap函数的时候Swap函数内部操作的就是main函数中的a和b直接将a和b的值交换了。那么就可以使用指针了在main函数中将a和b的地址传递给Swap函数Swap函数里边通过地址间接的操作main函数中的a和b并达到交换的效果就好了。 代码
#include stdio.h
void Swap2(int* px, int* py)
{int tmp 0;tmp *px;*px *py;*py tmp;
}
int main()
{int a 10;int b 20;printf(交换前a%d b%d\n, a, b);Swap2(a, b);//传址调用printf(交换后a%d b%d\n, a, b);return 0;
}运行结果 我们可以看到实现成Swap2的方式顺利完成了任务这里调用Swap2函数的时候是将变量的地址传递给了函数这种函数调用方式叫传址调用。
四、总结
传址调用可以让函数和主调函数之间建立真正的联系在函数内部可以修改主调函数中的变量所以未来函数中只是需要主调函数中的变量值来实现计算就可以采用传值调用。如果函数内部要修改主调函数中的变量的值就需要传址调用。 欧耶我学会啦