鱼C论坛

 找回密码
 立即注册
查看: 1666|回复: 6

[已解决]函数传递

[复制链接]
发表于 2018-6-6 23:51:20 | 显示全部楼层 |阅读模式
15鱼币
为什么运行完n_value(n);后,n还是等于0

不应该是323吗
最佳答案
2018-6-6 23:51:21
因为你n_value里的n和外面的n是2个n
你在调用n_value(n)的时候其实是复制了n的值给这个函数
你有2种方法解决,要么把n的地址传进去n_value(&n)
然后n_value方法要这样写
void n_value(int *n)
{
    *n = p * q;
}
或者你让n_value返回一个int这样的话可以写 n = n_value(n)
然后n_value方法要这样写
int n_value(int n)
{
    return (p * q)
}
{{_)(T_8`6PDQ7F6RFFCUF8.png

最佳答案

查看完整内容

因为你n_value里的n和外面的n是2个n 你在调用n_value(n)的时候其实是复制了n的值给这个函数 你有2种方法解决,要么把n的地址传进去n_value(&n) 然后n_value方法要这样写 void n_value(int *n) { *n = p * q; } 或者你让n_value返回一个int这样的话可以写 n = n_value(n) 然后n_value方法要这样写 int n_value(int n) { return (p * q) }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-6 23:51:21 | 显示全部楼层    本楼为最佳答案   
因为你n_value里的n和外面的n是2个n
你在调用n_value(n)的时候其实是复制了n的值给这个函数
你有2种方法解决,要么把n的地址传进去n_value(&n)
然后n_value方法要这样写
void n_value(int *n)
{
    *n = p * q;
}
或者你让n_value返回一个int这样的话可以写 n = n_value(n)
然后n_value方法要这样写
int n_value(int n)
{
    return (p * q)
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-7 06:58:45 | 显示全部楼层
n_value函数里面的n和main函数里面的n是两个不同的n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-8 13:47:26 | 显示全部楼层
本帖最后由 理想小青年 于 2018-6-8 13:48 编辑
  1. #include <stdio.h>

  2. void n_value(int n);
  3. const unsigned long p = 17;
  4. const unsigned long q = 19;
  5. int main(void)
  6. {
  7.         int n = 0;
  8.         n_value(n);        //没有返回值n依旧是int n = 0;
  9.         printf("%d",n);        //结果n = 0
  10.         return 0;
  11. }

  12. void n_value(int n)
  13. {
  14.         n = p * q;
  15.         printf("%d\n",n);        //结果n = 323
  16.         //return n;        //return n;把323返回到int man函数,这时候两个n都是323
  17. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-8 14:35:16 | 显示全部楼层
要&n,这样是地址传递可以改变实参的值
直接传递n是值传递,不改变实参的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-9 00:34:23 | 显示全部楼层
你修改是形参的数值。应该是取N的地址,然后函数参数是int *n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-6-12 16:54:44 | 显示全部楼层
大蟒蛇吃饭团 发表于 2018-6-6 23:51
因为你n_value里的n和外面的n是2个n
你在调用n_value(n)的时候其实是复制了n的值给这个函数
你有2种方法 ...

#include<iostream>
using namespace std;
const unsigned long p=17;
const unsigned long q=19;

void n_value(int *n)
{
        *n=p*q;
}
int main()
{
        int *n;
        int a;
        n=&a;
        n_value(n);
        cout<<a;
        cin.get();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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