丁丁打折网 - 网友优惠券分享网站,有688999个用户

京东优惠券 小米有品优惠券

当前位置 : 首页>web3>CSWAP币已上线交易所:详解C语言指针交换函数

CSWAP币已上线交易所:详解C语言指针交换函数

类别:web3 发布时间:2025-07-01 15:55

c语言中指针作为实参使用SWAP函数的问题

在C语言中,形参与实参的关系有点像“复印件”与“原件”的关系。无论参数的类型是什么,传递给子函数的形参只是实参的一个副本。因此,如果你直接在函数内部修改形参的值,就像改动复印件上的内容一样,对原件(实参)没有任何影响。

不过,如果参数是指针类型,那就有点像你拿到了原件的地址。你可以通过这个地址去修改原件里的内容,这样就能影响到实参了。

所以,如果你想用SWAP函数来交换数据,必须注意两点:

1. 参数必须是指向待交换数据的指针。

2. 交换时,你得交换地址里的数据,而不是交换地址本身。

来看几个例子吧:

错误的交换代码1:

void swap1(int a, int b) //参数不是待交换数据的指针

{

int t = a;

a = b;

b = t;

}

这个函数的问题是,它只是在函数内部交换了a和b的值,但这些变化不会影响到调用这个函数时的实参,因为它们只是值的副本。

错误的交换代码2:

void swap2(int *a, int *b)

{

int *t = a; //交换形参变量本身

a = b;

b = t;

}

这个函数的问题是,它只是交换了指针变量a和b本身,而不是它们指向的数据。结果是,交换后a和b指向的地址变了,但它们指向的内存中的数据并没有交换。

正确的交换代码:

void swap(int *a, int *b)

{

int t = *a; //交换形参变量地址中的数据,指针变量不变

*a = *b;

*b = t;

}

这个函数才是正确的,因为它通过指针访问到了实参的数据,并交换了这些数据。

C 语言swap函数怎么实现不了

老兄,你得再深入理解一下函数的参数和返回值啊!

首先,一个函数的返回值只能是一个变量,你的swap函数中用return(a,b)可能连编译都过不了哦!

还有,函数的参数有传地址、传值、传引用的三种形式。你这种情况,建议用传指针的方式,直接在swap函数里改动a,b的值。代码如下:

void swap(int *a, int *b)

{

int t;

t = *a;

*a = *b;

*b = t;

}

然后在main函数中调用时,就用swap(&a, &b);这样就行了。

丁丁打折网©版权所有,未经许可严禁复制或镜像 ICP证: 湘ICP备20009233号-2

Powered by 丁丁打折网本站为非营利性网站,本站内容均来自网络转载或网友提供,如有侵权或夸大不实请及时联系我们删除!本站不承担任何争议和法律责任!
技术支持:丁丁网 dddazhe@hotmail.com & 2010-2020 All rights reserved