c语言编程问题(不知道哪错了,返回值应该是什么

2025-04-13 21:10:57
推荐回答(1个)
回答1:

这个C语言里最入门的知识了吧,先不说功能,就语法上来看,前面声明了一个返回值为int型的swap函数,后面却定义了一个无返回值的swap函数?
从功能上说,你的swap函数根本就无法完成数值交换,C语言的书籍中都会把这个函数作为一个典型的例子进行讲解,其中提到了传值操作和传地址操作的不同:通过传值操作而进行的数据交换只影响形参的值,而不能改变实参的值!

//版本1:试图通过传值方式进行数据交换
void swap(int a,int b) {...} 再这个函数中a的值是x的一个副本,b的值是y的一个副本,该函数仅仅是交换了两个副本的值,对实参x和y没有丝毫影响。

//版本2:通过引用方式进行数据交换,前面的声明也要改成一致的!
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
main()函数中这样使用:swap(&x,&y);
指针a直接指向了实参x的地址,指针b直接指向了实参y的地址,然后再函数中将两个地址中保存的值(即实参的值)进行了交换。

除此以外,在C++语言中还有一种方式:引用。不过C语言里没有引用的概念。