[求助]一段简单的C代码 为啥得不到预期的结果~

软件和网站开发以及相关技术探讨
回复
fengmanloude
帖子: 95
注册时间: 2011-05-21 19:35

[求助]一段简单的C代码 为啥得不到预期的结果~

#1

帖子 fengmanloude » 2012-04-21 22:15

代码如下:

代码: 全选

#include <stdio.h>
void increment(int x)
{
        x = x + 1;
}

int main(void)
{
        int i = 1, j = 2;
        increment(i); /* i now becomes 2 */
        increment(j); /* j now becomes 3 */
        printf("%d:%d\n", i,j);
        return 0;
书上的例子我想得到的结果如注释i now becomes 2 */ j now becomes 3 可结果是1,2;是因为increment后没有把i何j重新赋值给i,j吗?
还是increment没有起作用啊?
头像
redhatlinux10
帖子: 773
注册时间: 2008-01-22 23:24
来自: 三亚
联系:

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#2

帖子 redhatlinux10 » 2012-04-21 22:37

increment函数调用是 传值调用。要达到你的目的,你得传指针。
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#3

帖子 cuihao » 2012-04-21 22:41

代码: 全选

void increment(int *x)
{
        *x = *x + 1;
}
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
鲍尔默
帖子: 162
注册时间: 2011-04-26 23:39

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#4

帖子 鲍尔默 » 2012-04-22 7:54

什么破书!
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#5

帖子 cao627 » 2012-04-22 9:54

i,j定义在increment(int x)函数外面, increment(int x)函数作用不到i 和 j

代码: 全选

什么破书!
头像
dryland718
帖子: 287
注册时间: 2011-08-17 12:54

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#6

帖子 dryland718 » 2012-04-22 10:50

什么破书!
头像
delphithu
帖子: 75
注册时间: 2010-11-04 21:50

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#7

帖子 delphithu » 2012-04-22 11:14

形参和实参的区别
简单一点,再简单一点,那就是生活............
头像
wjchen
帖子: 583
注册时间: 2011-05-02 19:08
系统: ubuntu 12.04

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#8

帖子 wjchen » 2012-04-22 11:20

什么破书!
:em20
头像
牵牛星
帖子: 998
注册时间: 2011-11-26 11:44
来自: ★光坂高校文艺部★

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#9

帖子 牵牛星 » 2012-04-22 11:51

复制不会改变参数本身 请善用&,如果可以请加const
openSUSE+KDE
我用A卡,不曾杯具
驱动开源之不提倡者
AMD_N930+AMD_HD5470+AMD_M880G(3A党)
Linux就是2B(NB的架构+SB的驱动)
子曰:写C时适当d "断行" || "缩进" || "空格" == "注释"
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#10

帖子 susbarbatus » 2012-04-22 12:09

牵牛星 写了:复制不会改变参数本身 请善用&,如果可以请加const
C没有引用吧……
沉迷将棋中……
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#11

帖子 cjxgm » 2012-04-22 12:34

希望书后面讲到:以上代码是不能达到预期结果的,因为……
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
牵牛星
帖子: 998
注册时间: 2011-11-26 11:44
来自: ★光坂高校文艺部★

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#12

帖子 牵牛星 » 2012-04-22 12:35

susbarbatus 写了:
牵牛星 写了:复制不会改变参数本身 请善用&,如果可以请加const
C没有引用吧……
嗯 C没学好 :em06
openSUSE+KDE
我用A卡,不曾杯具
驱动开源之不提倡者
AMD_N930+AMD_HD5470+AMD_M880G(3A党)
Linux就是2B(NB的架构+SB的驱动)
子曰:写C时适当d "断行" || "缩进" || "空格" == "注释"
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#13

帖子 YeLee » 2012-04-22 12:39

该死……给个函数返回值不就行了吗? :em20
其实,我想这书出这题目,无非是想告诉大家变量的作用域而已。 :em06
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
yan9w
帖子: 5
注册时间: 2012-01-29 13:23

Re: [求助]一段简单的C代码 为啥得不到预期的结果~

#14

帖子 yan9w » 2012-04-23 13:35

代码: 全选

#include <stdio.h>
int increment(int x)
{
    return x+1;          
}

int main(void)
{
    int i = 1, j = 2;
    i= increment(i); /* i now becomes 2 */
    j=increment(j); /* j now becomes 3 */
    printf("%d:%d\n", i,j);
    return 0;
}
这样成功了
回复