c语言函数之间的通信方式,C语言指针在函数间通信的问题

本文解析了C语言中函数interchange如何通过指针实现main函数变量交换,强调了指针在内存操作中的核心地位,并通过实例展示了不使用函数的简单数据交换过程。关键在于理解作用域原理和指针对内存的直接操作能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include

void interchange(int * u, int * v);

int main(void){

int x = 5, y = 10;

printf("Originally x = %d and y = %d.\n", x,

y);

interchange(&x,

&y); // send addresses to function

printf("Now x = %d and y = %d.\n", x,

y);

return 0;

}

void interchange(int * u, int * v)

{

int temp;

temp = *u; // temp gets value that u points

to

*u = *v;

*v = temp;

}

刚学习此节时,总是抓不住重点,今天忽然领悟到:

这首先要搞清函数作用域的问题。main函数调用interchange,interchange局部变量的所有操作,都是是interchange的stack

frame中,是不会到main函数中的变量中去的。如果这里我们不用函数interchange,而是直接用temp变量作为中介交换,是完全可以实现x与y数据交换的:

#include

int main(void){

int x=5,y=10;

printf("originally x=%d and y=%d.\n",x,y);

printf("originally

&x,&y=%x\t%x\n",&x,&y);

int temp=x;

x=y;

y=temp;

printf("now x=%d and y=%d.\n",x,y);

printf("now

&x,&y=%x\t%x\n",&x,&y);

return 0;

}

然后,我们回到主题,利用指针,在interchange函数内部就可以实现对main函数中变量的修改,充分说明了指针是对内存进行操作,证明了其优势所在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值