鱼C论坛

 找回密码
 立即注册
查看: 70|回复: 1

[学习笔记] 今日练习

[复制链接]
发表于 2025-3-24 16:45:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 luoshengZ 于 2025-3-24 17:38 编辑

#include <stdio.h>
void test(int &x){
        x=1024;
        printf("test函数内部 x=%d\n",x);
}
int main()
{
   int x=1;
   printf("调用test前 x=%d\n",x);
   test(x);
   printf("调用test后 x=%d\n",x);

   return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-3-24 16:47:02 | 显示全部楼层
你的代码演示了 C 语言中**值传递**的特性。在 `test(x)` 函数调用时,`x` 的值被复制到 `test` 函数的参数 `x`,但这不会影响 `main` 函数中的 `x`。  

运行结果如下:  
调用test前 x=1
test函数内部 x=1024
调用test后 x=1

### **解释**
1. `main` 函数中 `x=1`,然后调用 `test(x)`,此时 `x` 的值被复制给 `test` 函数的参数 `x`。
2. `test` 函数内部修改了 `x=1024`,但这个 `x` 只是 `test` 函数的局部变量,不影响 `main` 里的 `x`。
3. `test` 结束后,`main` 里的 `x` 仍然是 `1`,所以最后的 `printf` 仍然输出 `1`。

### **如何修改 `x` 的值?**
如果想在 `test` 函数中修改 `main` 里的 `x`,可以使用**指针**传递变量地址:
#include <stdio.h>

void test(int *x){
    *x = 1024;
    printf("test函数内部 x=%d
", *x);
}

int main()
{
   int x = 1;
   printf("调用test前 x=%d
", x);
   test(&x);
   printf("调用test后 x=%d
", x);

   return 0;
}

这样 `test` 通过指针修改 `x`,`main` 里的 `x` 也会被改变,运行结果如下:
调用test前 x=1
test函数内部 x=1024
调用test后 x=1024

这样就实现了**引用传递**的效果!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-2 01:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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