| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 522 人关注过本帖
标题:返回值不对
只看楼主 加入收藏
Zhijian01
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2012-12-29
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:13 
返回值不对
#include "stdio.h"
int main()
{
    int * cha(char* p);
    char a[100];
    int *x,i;
    x=cha(a);
    for(i=0;i<5;i++)
    printf("%d\n",x[i]);
    return 0;

}
     int *cha(char* p)
     {
         int a[5]={0,0,0,0,0};
         return a;
     }
这个返回值不是a5的值,求教
搜索更多相关主题的帖子: cha include 
2013-01-14 16:36
Zhijian01
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2012-12-29
收藏
得分:0 
着急
2013-01-14 16:38
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
就像我们买东西要看保质期一样,变量也有保质期,楼主的cha函数返回的指针和数组在程序脱离cha函数后已经被收回销毁,在调用已经没有意义了

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 16:46
Zhijian01
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2012-12-29
收藏
得分:0 
但是第一个数字输出是正确的啊
2013-01-14 16:49
Zhijian01
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2012-12-29
收藏
得分:0 

#include "stdio.h"                  //原来的程序是这样的,想统计字母等的个数的
int main()
{
    int *cha(char*p);
    char a[100];
    int i,*z;
    char *x;
    x=a;
    printf("shu ru shi fu:");
    scanf("%s",a);
    i=0;
    while (a[i]!='\0')
    {    printf("%c",a[i]);
    i++;
    }printf("\n");
    z=cha(a);
    for (i=0;i<5;i++)

    {printf("a[%d]=%d",i+1,*(z+i));
    printf("\n");}
    return 0;
}
    int *cha(char*p)
    {   
        int i,a[5]={0,0,0,0,0};
        
       printf("%s",p);
        printf("\n");
        for(i=0;p[i]!='\n';i++)
    {    if(p[i]>='0'&&p[i]<='9')a[0]++;             //这里是想用数组统计字母个数,然后返回数组首地址
        else if(p[i]>='a'&&p[i]<='z')a[1]++;
        else if(p[i]>='A'&&p[i]<='Z')a[2]++;
        else if(p[i]==' ')a[3]++;
        else a[4]++;}
   
        return a;
        
    }                                                  //这样不行吗?我是菜鸟,请教高手
2013-01-14 17:00
Zhijian01
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2012-12-29
收藏
得分:0 
怎么回事呢
2013-01-14 17:04
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
不管楼主在输出时输出了什么都说明不了任何事情,内存被收回后会重新使用,如果这段地址下次使用前没有被占用,那么输出的结果就是楼主想要的,如果已经被占用..............

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 17:21
Zhijian01
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2012-12-29
收藏
得分:0 
这样吧,看看我修改的程序如下,怎么也是不对
#include "stdio.h"
int a[5]={0};
int main()
{
    void cha(char*p);
    char b[100];
    int i;
   
       printf("shu ru shi fu:");
       gets(b);
        i=0;
    while (b[i]!='\0')
    {    printf("%c",b[i]);
        i++;
    }
        printf("\n");
        cha(b);
    for (i=0;i<5;i++)

    {
        printf("b[%d]=%d",i+1,a[i]);
         printf("\n");
    }
    return 0;
}
    void cha(char*p)
    {   
        int i;
        for (i=0;p[i]!='\0';i++)
            printf("%c",p[i]);
            printf("\n");
        for(i=0;p[i]!='\n';i++)
        {
            if(p[i]>='0'&&p[i]<='9')a[0]++;
            else if(p[i]>='a'&&p[i]<='z')a[1]++;
            else if(p[i]>='A'&&p[i]<='Z')a[2]++;
            else if(p[i]==' ')a[3]++;
            else a[4]++;
        }
   

        
    }

2013-01-14 18:06
Zhijian01
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2012-12-29
收藏
得分:0 
a数组是全局变量数组,怎么打印的数值还是不对
2013-01-14 18:08
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:20 
for(i=0;p[i]!='\n';i++)---> for(i=0;p[i]!='\0';i++)
回车符‘\n’其实不是表面那么简单,他是区别于其他字符的,楼主有兴趣可以在网上找找


认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 19:48
快速回复:返回值不对
数据加载中...
 
   



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

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