| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 652 人关注过本帖
标题:大家看看我的指针数组错在哪里
只看楼主 加入收藏
bianfeng
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-28
结帖率:0
收藏
 问题点数:0 回复次数:7 
大家看看我的指针数组错在哪里
VC下编译正确,就是在输入字符串时内存出错:

#include "stdio.h"
#include "conio.h"
#include "string.h"
int sort(char * si[], int n)
{
        int m;
        for(int i=0;i<2;i++)
        {
                for(int j=i+1;j<3;j++)        
                        if (strcmp(si,si[i+1])>0)
                                m=i+1;
                            if(i!=m)
                                {
                                        char temp=*si;
                                        *si=*si[m];
                                        *si[m]=temp;
                                }
        }
        return 0;
}


int inPut(char * s[])
{
        for(int i=0;i<3;i++)
                scanf("%s",s);
        return 0;
}

int Print(char * c[])
{
        for(int i=0;i<3;i++)
                printf("%s\n",c);
        return 0;
}




int main()
{
        char *ch[3];
        inPut(ch);
        sort(ch,3);
        getch();
        return 0;
}
搜索更多相关主题的帖子: 指针 
2008-04-05 18:18
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
个人觉得,问题较多
int inPut(char * s[])
{
        for(int i=0;i<3;i++,s++)// 因该s++,否则真正输入的是最后一次的
        {
                scanf("%s",s);
                printf("=%s\n",s);
        }
        return 0;
}

int Print(char * c[])
{
        for(int i=0;i<3;i++,c++) // 因该c++,否则输出的永远是一个值
                printf("%s\n",c);
        return 0;
}
还有,你的ch指针数组并没有分得内存,同时你的排序处的指针类型不对.

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-04-05 19:10
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
缩进为何这样?

用的制表符吧。

[[it] 本帖最后由 cosdos 于 2008-4-5 19:27 编辑 [/it]]

—>〉Sun〈<—
2008-04-05 19:25
bianfeng
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-28
收藏
得分:0 
二楼的朋友回答是错误的啊..编译通不过啊
2008-04-05 20:04
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
当然不能通过了.
我不是说过你的排序函数内的指针类型不对吗,就是因为类型不匹才不能通过

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-04-05 20:18
zm1986
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-3-16
收藏
得分:0 
int inPut(char * s[])
{
        for(int i=0;i<3;i++)
        scanf("%s",s[i]);
        return 0;
}

int Print(char * c[])
{
        for(int i=0;i<3;i++)
        printf("%s\n",c[i]);
        return 0;
}
这样应该可以了吧,如果lz改掉了2楼说的分配内存和排序的错
书上说根据优先级,在char *ch[3]中ch先与[]结合,相当于定义一个数组,再与*结合,表示数组是指针类型的,相当于定义了一个存放指针变量的数组,数组的每个元素是一个指针变量
2008-04-05 21:07
新手上路了
Rank: 1
等 级:新手上路
威 望:2
帖 子:107
专家分:0
注 册:2008-3-27
收藏
得分:0 
#include "stdio.h"
#include "conio.h"
#include "string.h"
int sort(char * si[], int n)                         //数组传递应该sort(char si[],int n),或者这么写
                                                     //sort(int *p,int n)
{
        int m;
        for(int i=0;i<2;i++)                          //第一i在C中不能这么定义,必须先年个定义
        {
                for(int j=i+1;j<3;j++)        
                        if (strcmp(si,si[i+1])>0)
                                m=i+1;
                            if(i!=m)
                                {
                                        char temp=*si;
                                        *si=*si[m];
                                        *si[m]=temp;
                                }
        }
        return 0;
}


int inPut(char * s[])
{
        for(int i=0;i<3;i++)                          //同样的错误,C不同于java
                scanf("%s",s);
        return 0;
}

int Print(char * c[])
{
        for(int i=0;i<3;i++)                          //基本一个错误,不说了,自己看吧
                printf("%s\n",c);
        return 0;
}




int main()
{
        char *ch[3];
        inPut(ch);
        sort(ch,3);
        getch();
        return 0;
}
2008-04-05 21:24
bianfeng
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-28
收藏
得分:0 
楼上朋友你的函数sort(int *p,int n) 我明白.
我用的就是指针组数.排序只不过是交换的是地址,不是数值.
2008-04-05 21:35
快速回复:大家看看我的指针数组错在哪里
数据加载中...
 
   



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

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