发布网友 发布时间:2023-07-08 17:55
共3个回答
热心网友 时间:2023-10-22 00:59
确实是只能单向传递(在C语言),不矛盾。
如果直接传值(void swap(int a,int b)),那么无论在函数里如何修改这个值,都修改的是函数里那个变量的值,不会影响外面。
如果传地址(void swap(int*a,int*b)),那么函数拿到这个地址就可以修改这个内存地址中的数据,退出函数后原来变量的内存地址中的数据就改变了。
所以,swap函数里的变量值无论如何都传递不到主函数的,传址的时候是通过地址修改了主函数里的数据。
附图1,传值为什么改不了
附图2,传址为什么能改
热心网友 时间:2023-10-22 00:59
swap是典型的解释指针用法的教科书例子。。。热心网友 时间:2023-10-22 01:00
关键是传指针或者引用,还是传值,前三个就不说了,不管传指针还是引用,都是这个结果,关键是(4)的输出,因为你传的是指针,所以,在函数内部,变量的值变了,在函数外部有效,如果你去掉*指针标志,估计就还是输出x=30,y=20追问能不能讲解一下swap函数里的变量值是怎么传递到主函数的,求过程,通俗点说或者画个图什么的告诉我主函数里的xy怎么改变的,麻烦了