| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1021 人关注过本帖
标题:新手问个指针和数组的问题
只看楼主 加入收藏
sun599
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-7-29
收藏
 问题点数:0 回复次数:11 
新手问个指针和数组的问题
话不多说 看看代码咯
我在 同个函数下输出是没问题的
但是调用到其他函数后 输出就出错误了
我想问问我哪里写错了  新手咯  
望各位大大解答下
# include <stdio.h>

int * add(void)
{
    int * padd,add[9],i;
    for(i=0;i<9;i++)
        add[i]=i;
    padd=add;
    i=0;
    //在同函数下 输出是没问题的
    for(padd=add;padd<add+9;padd++)
        printf("add[%d]=%d\n",i++,*padd);
    return padd;
}

void result(int * p)
{
    //调用到其他函数后 输出出问题了 问下原因咯 哪错了???
    int i=0;
    while(p)
    {
        i++;
        p++;
        printf("p:%d\n",*p);
        if(i==9)
            break;
    }
}

int main(void)
{
    int * add(void),* p;
    p=add();
    result(p);
    return 0;
}
搜索更多相关主题的帖子: void include return result 
2012-08-01 15:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
return padd;
看见这句就不用往下看了

授人以渔,不授人以鱼。
2012-08-01 15:38
sun599
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-7-29
收藏
得分:0 
回复 2楼 TonyDeng
什么意思???不能返回指针么?
2012-08-01 15:40
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
padd=add;
    i=0;
    //在同函数下 输出是没问题的
    for(padd=add;padd<add+9;padd++)
        printf("add[%d]=%d\n",i++,*padd);
    return padd;

你返回了一个指向函数内的局部变量的指针 而函数内的局部变量在函数结束后就销毁了 也就是 你返回了一个野指针 可以这么说罢
2012-08-01 15:42
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
这个叫返回栈内存还是什么、、


2012-08-01 15:44
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
代码不是你想写 想写就能写

指针不是你想用 想用就能用

指针理解不深刻 代码很容易写错的
2012-08-01 15:45
sun599
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-7-29
收藏
得分:0 
回复 6楼 zklhp
知道了 谢谢 提醒  我继续看 基础书去了
2012-08-01 15:45
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
收藏
得分:0 
指针是c语言的灵魂 !
有没有一种比较通俗的 介绍指针的啊?
2012-08-01 16:27
a7882669
Rank: 4
等 级:业余侠客
帖 子:192
专家分:290
注 册:2012-4-17
收藏
得分:0 
回复 8楼 q215236213
额。。。。。。。。。。
2012-08-02 10:42
zcc12342234
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2012-8-8
收藏
得分:0 
# include <stdio.h>
# include <malloc.h>


int * Aprr(void)
{
    int * padd, i;
    int * Aprr = (int *)malloc(9 * sizeof(int));


    for(i=0; i<9; i++)
    {
        Aprr[i] = i;
    }
    padd = Aprr;
    i=0;
    //在同函数下 输出是没问题的
    for(padd=Aprr; padd<Aprr+9; padd++)
        printf("Aprr[%d]=%d\n",i++,*padd);
    return padd - 10;
}

void result(int * p)
{
    //调用到其他函数后 输出出问题了 问下原因咯 哪错了???
    int i=0;
    while(p)
    {
        i++;
        p++;
        printf("p:%d\n", *p);
        if(i == 9)
            break;
    }
}

int main(void)
{
    int * p;
    p=Aprr();
    result(p);
    return 0;
}


这样应该就是你想要的结果吧,稍改动了一下,但还不规范,但解决了你用函数调用后不输出的问题!
2012-08-11 23:04
快速回复:新手问个指针和数组的问题
数据加载中...
 
   



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

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