欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > C语言交换函数:为什么必须用指针传递参数?

C语言交换函数:为什么必须用指针传递参数?

2025/4/23 5:00:39 来源:https://blog.csdn.net/2302_80604680/article/details/147399428  浏览:    关键词:C语言交换函数:为什么必须用指针传递参数?

写一个简单交换两个变量值的函数,我们要理解C语言中参数传递的机制.

C语言中的函数参数默认是按值传递,也就是说,如果我写一个函数,如

void swap(int a,int b)
{int tmp = a;a = b;b = tmp;
}

然后在函数内部交换a,b的值,这不会影响到函数外部的变量,因为传递的是值的副本.

就像这样,运行后a,b值并没有交换成功

void Swap(int a, int b)//没有交换成功,错误函数
{       //仅仅同名int tmp = a;a = b;b = tmp;
}
int main()
{int a, b;//这俩a仅仅同名scanf("%d%d", &a, &b);printf("交换前:%d,%d\n", a, b);Swap(a, b);//交换a,bprintf("交换后:%d,%d\n", a, b);return 0;
}

正确的做法应该是使用指针,通过传递变量的地址,函数可以修改实际变量的值.如下:参数是整形指针,然后在函数内部通过接引用来交换值. 

void Swap(int*p1, int*p2)
{      int* tmp;tmp = p1;p1 = p2;p2 = tmp;}
int main()
{int a, b;scanf("%d%d", &a, &b);printf("交换前:%d,%d\n", a, b);Swap(&a, &b);printf("交换后:%d,%d\n", a, b);return 0;
}

总结:一个函数A通过调用函数B,来达到修改A中变量的值

1.必须传指针;

2.在B中必须解引用. 

上面为解决很多指针问题非常非常重要的点

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词