您的位置:首页 > 财经 > 金融 > 营销网课_建设工程机械职业技能鉴定_竞价托管_怎么制作网站二维码

营销网课_建设工程机械职业技能鉴定_竞价托管_怎么制作网站二维码

2024/12/23 10:37:42 来源:https://blog.csdn.net/qq_42550898/article/details/143911031  浏览:    关键词:营销网课_建设工程机械职业技能鉴定_竞价托管_怎么制作网站二维码
营销网课_建设工程机械职业技能鉴定_竞价托管_怎么制作网站二维码

1. 项目场景:

➢ 米粒对Jack Qiao说:“她在函数参数传递时,发现将一个变量传递给函数时,传递失败。”


2. 问题描述

➢ 举个栗子:用以下代码交换ab的值,结果失败:

 

#include<stdio.h>void Swap(int x, int y)
{int temp = 0;temp = x;x = y;y = temp;
}int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);printf("交换之前的a=%d,b=%d\n", a, b);Swap(a, b); printf("交换后的a=%d,b=%d\n", a, b);return 0;
}

 失败的结果如下


3. 原因分析:

 在米粒的原始代码中,Swap 函数的参数是按值传递的。这意味着当你调用 Swap(a, b) 时,x 和 实际上是 a 和 b 的副本。因此,米粒在 Swap 函数内部对 x 和 y 的修改不会影响到 main 函数中的 a b


4. 解决方案:

通过传递变量的地址可以在函数内部直接修改原始变量的值函数参数传递机制

#include<stdio.h>void Swap(int* x, int* y)
{int temp = 0;temp = *x;*x = *y;*y = temp;
}int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);printf("交换之前的值:a=%d,b=%d\n", a, b);Swap(&a, &b);  // 传递变量的地址printf("交换之后的值:a=%d,b=%d\n", a, b);return 0;
}

 成功运行结果如下:

★ 总结

     ☞ 指针传递Swap 函数的参数是 int *x 和 int *y,表示它们是指向整数的指针。

     ☞ 修改原始变量:通过 *x 和 *y 访问并修改指针所指向的变量。

     ☞ 传递地址:在 main 函数中,通过 &a 和 &b 传递变量的地址。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com