鱼C论坛

 找回密码
 立即注册
查看: 870|回复: 2

[已解决]指针做函数形参

[复制链接]
发表于 2020-8-30 23:30:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int main(void)
{
  int a=5,b=6;
  int*pa=&a,*pb=&b;
  void swap1(int x,int y)
  swap1(a.b);
  printf("After calling swap1:a=%d b=%d\n",a,b);
}
void swap1(int x,int y)
{
     int t;
     t=x;
     x=y;
     y=t;
}
此程序的输出结果是什么?为什么?具体运行过程是什么?
最佳答案
2020-8-30 23:32:53
本帖最后由 baige 于 2020-8-30 23:35 编辑

输出结果:After calling swap1:a=5 b=6
你这个程序没有用指针做函数形参,然后在swap1()函数里的交换没有用,在swap1()函数里,x和y的值有交换,但swap1()函数调用结束后x,y就被释放了,主函数的a,b并没有交换
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-30 23:32:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 baige 于 2020-8-30 23:35 编辑

输出结果:After calling swap1:a=5 b=6
你这个程序没有用指针做函数形参,然后在swap1()函数里的交换没有用,在swap1()函数里,x和y的值有交换,但swap1()函数调用结束后x,y就被释放了,主函数的a,b并没有交换
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 23:33:52 | 显示全部楼层
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         int a=5,b=6;
  5.         void swap1(int *x,int *y);
  6.         swap1(&a,&b);
  7.         printf("After calling swap1:a=%d b=%d\n",a,b);
  8. }
  9. void swap1(int *x,int *y)
  10. {
  11.         int t;
  12.         t=*x;
  13.         *x=*y;
  14.         *y=t;
  15. }
复制代码

这样才是指针做函数形参
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表