如何通过函数调用得到n个要改变的值(摘抄自谭浩强C语言)

如果想通过函数调用得到n个要改变的值,可以:

1、在主调函数中设n个变量,用n个指针变量指向它们;

2、然后将指针变量作实参,将这n个变量的地址传给所调用的函数的形参;

3、通过形参指针变量,改变该n个变量的值;

4、主调函数中就可以使用这些改变了值的变量。


程序举例详见C程序设计(谭浩强)226-229页


想要通过函数调用交换两个数据值得正确程序:

void swap(int *p1,int *p2)

{

int temp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

上面程序的理解是,通过调换指针所指向的变量值,达到实参中指向地址中的变量值的调换,最终达到变换目的


错误程序如下:

void swap(int *p1,int *p2)

{

int *p;

p=p1;

p1=p2;

p2=p;

}

程序的意图是,通过交换实参指针pointer_1和指针pointer_2的值,使其达到交换的目的

但存在问题,当在调用函数中交换形参指针p1和p2的值后,不能讲变化后的形参传递给实参,故不能达到实参指针变量交换的目的

C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。不可能通过调用函数来改变实参指针变量的值,但可以改变实参指针变量所指变量的值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值