| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 570 人关注过本帖
标题:[求助]指针与数组名问题
只看楼主 加入收藏
changyi5757
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-7-31
收藏
 问题点数:0 回复次数:3 
[求助]指针与数组名问题
以下程序是对字符串的排序:
#include<stdio.h>
#define N 3
#define M 10
main()
{
  int i,j,k;
  char *str[N],a[N][M],*p,*q;
 for(i=0;i<N;i++)
   {
     scanf("%s",a+i);
     str[i]=a+i;
   }
   q=str;
   for(i=0;i<N-1;i++)
     {k=i;
     for(j=i+1;j<N;j++)
      if(strcmp(*(str+k),*(str+j))>0)k=j;   /*请问这里为什么不能将*(str+k)换为*(q+k),前面我已
       if(k!=i)                                          定义char *q,并且q=str
       {                                                 将程序变为
  p=*(str+i);                                         if(strcmp(*(q+k),*(q+j))>0)k=j;  
  *(str+i)=*(str+k);                                if(k!=i) {
  *(str+k)=p;                                         p=*(str+i);
       }                                                   *(str+i)=*(str+k);
     }                                                     *(str+k)=p;
for(i=0;i<N;i++)                                              }   
printf("%s\n",str[i]);                               }
}                                                        这样为什么不能得到正确的结果
搜索更多相关主题的帖子: 指针 
2005-08-20 20:45
changyi5757
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-7-31
收藏
得分:0 
上面输错了一个地方
以下程序是对字符串的排序:
#include<stdio.h>
#define N 3
#define M 10
main()
{
  int i,j,k;
  char *str[N],a[N][M],*p,*q;
for(i=0;i<N;i++)
   {
     scanf("%s",a+i);
     str[i]=a+i;
   }
   q=str;
   for(i=0;i<N-1;i++)
     {k=i;
     for(j=i+1;j<N;j++)
      if(strcmp(*(str+k),*(str+j))>0)k=j;   /*请问这里为什么不能将*(str+k)换为*(q+k),前面我已
       if(k!=i)                                          定义char *q,并且q=str
       {                                                 将程序变为
  p=*(str+i);                                         if(strcmp(*(q+k),*(q+j))>0)k=j;  
  *(str+i)=*(str+k);                                if(k!=i) {
  *(str+k)=p;                                         p=*(q+i);
       }                                                   *(q+i)=*(q+k);
     }                                                     *(q+k)=p;
for(i=0;i<N;i++)                                              }   
printf("%s\n",str[i]);                               }
}                                                        这样为什么不能得到正确的结果
2005-08-20 20:47
cillin
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2005-3-10
收藏
得分:0 
程序中涉及到二级间址 请注意你的指针类型

2005-08-21 02:38
cosixu
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-10-11
收藏
得分:0 
请问这里为什么不能将*(str+k)换为*(q+k)
如果向你所说的话定义时应定义int **q;
q=str;
2005-08-22 10:07
快速回复:[求助]指针与数组名问题
数据加载中...
 
   



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

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