QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
31
查看: 227|回复: 6

[已解决]函数传递

[复制链接]
最佳答案
0 
累计签到:12 天
连续签到:1 天
enchanted 发表于 2018-6-6 23:51:20 2276 | 显示全部楼层 |阅读模式
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) }
楼层
跳转到指定楼层
最佳答案
1 
累计签到:30 天
连续签到:20 天
大蟒蛇吃饭团 发表于 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)
}
最佳答案
1122 
累计签到:363 天
连续签到:6 天
BngThea 发表于 2018-6-7 06:58:45 | 显示全部楼层
n_value函数里面的n和main函数里面的n是两个不同的n
最佳答案
12 
累计签到:163 天
连续签到:3 天
理想小青年 发表于 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. }
复制代码
最佳答案
0 
累计签到:29 天
连续签到:1 天
wa_junye 发表于 2018-6-8 14:35:16 | 显示全部楼层
要&n,这样是地址传递可以改变实参的值
直接传递n是值传递,不改变实参的值
最佳答案
0 
累计签到:42 天
连续签到:1 天
Mr.HO 发表于 2018-6-9 00:34:23 | 显示全部楼层
你修改是形参的数值。应该是取N的地址,然后函数参数是int *n
最佳答案
0 
累计签到:12 天
连续签到:1 天
enchanted  楼主| 发表于 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;
}

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-21 06:30

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