| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1524 人关注过本帖
标题:从子子程序调用子程序指向的变量@_@,地址是错的……
只看楼主 加入收藏
sunb3
Rank: 2
来 自:北京
等 级:论坛游民
威 望:3
帖 子:34
专家分:94
注 册:2017-4-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
从子子程序调用子程序指向的变量@_@,地址是错的……
如题:
plus_one和plus_two是sum的子函数,是main的子子函数,sum是main的子函数。
SUM调用plus_one和plus_two把目标增加1和2,并根据返回的值返回是否计算成功的状态(其实必然返回TRUE才对)
但是这个过程中的参数i的值却一直都没有变……

程序代码:
#include <stdio.h>
#define TRUE  1;
#define FALSE 0;

typedef unsigned short int BOOL;

BOOL plus_one(int *);
BOOL plus_two(int *);
BOOL SUM(int *);

int main(void) {
    int i = 0;
    printf("I - Addr: 0x%p\n\n",&i);
    if (SUM(&i)) {
        printf("SUCC: %d\n",i);
    }
    else {
        printf("Uhm...",i);
    }
    getchar();

    return 0;
}

BOOL plus_one(int *n) {
    printf("Welcome to Plus1!\n");
    n += 1;
    printf("p1_n - Addr: 0x%p\n\n", &n);
    return TRUE;
}

BOOL plus_two(int *n) {
    printf("Welcome to Plus2!\n");
    n += 2;
    printf("p2_n - Addr: 0x%p\n\n", &n);
    return TRUE;
}

BOOL SUM(int *n) {
    printf("sum_n - Addr: 0x%p\n\n", n);
    return (plus_one(n) && plus_two(n));
}


运行后结果是:
图片附件: 游客没有浏览图片的权限,请 登录注册


为什么plus_one和plus_two的地址和sum的n不一致?该怎么更正?
搜索更多相关主题的帖子: 子程序 
2017-04-24 08:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54066
注 册:2011-1-18
收藏
得分:10 
程序代码:
BOOL plus_one(int *n) {
    printf("Welcome to Plus1!\n");
    *n += 1;
    printf("p1_n - Addr: 0x%p\n\n", n);
    return TRUE;
}

BOOL plus_two(int *n) {
    printf("Welcome to Plus2!\n");
    *n += 2;
    printf("p2_n - Addr: 0x%p\n\n", n);
    return TRUE;
}
2017-04-24 08:49
sunb3
Rank: 2
来 自:北京
等 级:论坛游民
威 望:3
帖 子:34
专家分:94
注 册:2017-4-20
收藏
得分:0 
感谢提点!我果然指针的底子还很差啊……

除了基础……我什么都不会……
2017-04-24 10:32
kelehaier
Rank: 2
等 级:论坛游民
帖 子:12
专家分:39
注 册:2011-11-13
收藏
得分:0 
指针这个东东确实不太好掌握,关键是指针具有一般变量的特性时,还有一个指向的特性,即通过*来获取一个值。
鉴于此,我最近写了一个系列,关于指针的系列,有兴趣的朋友可以看看我的微博:http://
收到的鲜花
  • sunb32017-05-02 11:50 送鲜花  10朵   附言:谢谢

学习C语言,请关注微博与微信:C语言编程技术分享
2017-04-29 11:22
快速回复:从子子程序调用子程序指向的变量@_@,地址是错的……
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018892 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved