| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1209 人关注过本帖
标题:一个让人感觉矛盾的字符二维数组!!!
只看楼主 加入收藏
NO.Tomato
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-1-5
收藏
 问题点数:0 回复次数:9 
一个让人感觉矛盾的字符二维数组!!!
程序1:#include "stdio.h"
#include "string.h"
void main()
{char a[2][20];
 int i;
 for(i=0;i<2;i++)
    [bold] scanf("%s",a+i);[/bold] for(i=0;i<2;i++)
     printf("%s\n",a+i);
}
程序2:#include "stdio.h"
#include "string.h"
void sotr(char *p[])
{int i,j;
 char *temp;
 for(i=0;i<9;i++)
     for(j=0;j<9-i;j++)
         if(strcmp(*(p+j),*(p+j+1))>0)
         {temp=*(p+j);
          *(p+j)=*(p+j+1);
          *(p+j+1)=temp;
         }
}
void  main()
{int i;
 char *p[10],str[10][20];
 for(i=0;i<10;i++)
     *(p+i)=str+i; printf("Input 10 strings:\n");
 for(i=0;i<10;i++)
     scanf("%s",p[i]);
 sotr(p);
 printf("Now ,the sequence is :\n");
 for(i=0;i<10;i++)
     printf("%s\n",p[i]);
}
为什么上面可以输入,下面的不可以赋给地址!希高手不吝赐教!!!
搜索更多相关主题的帖子: 字符 矛盾 感觉 
2008-01-07 09:47
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
第一个程序
#include "stdio.h"
#include "string.h"
void main()
{char a[2][20];
int i;
for(i=0;i<2;i++)
     scanf("%s",a+i); for(i=0;i<2;i++)/*二维数组默任按行排列 第一行 a[0][20] */
                                      /*第二行  a[1][20]*/
                                     /*第一次 a+0==a[0][20]*/ /*第二次 a+1==a[1][20] */
   printf("%s\n",a+i);
}
/*第二个程序是不是有警告*/
/*如是我帮你改一下*/
2008-01-07 10:15
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
第二个程序改了下地址
#include "stdio.h"
#include "string.h"
void sotr(char *p[])
{int i,j;
char *temp;
for(i=0;i<9;i++)
     for(j=0;j<9-i;j++)
         if(strcmp(*(p+j),*(p+j+1))>0)
         {temp=*(p+j);
          *(p+j)=*(p+j+1);
          *(p+j+1)=temp;
         }
}

void  main()
{int i;
char *p[10],str[10][20];
for(i=0;i<10;i++)
     *(p+i)=*(str+i); printf("Input 10 strings:\n");
for(i=0;i<10;i++)
     scanf("%s",p[i]);
sotr(p);
printf("Now ,the sequence is :\n");
for(i=0;i<10;i++)
     printf("%s\n",p[i]);
}
2008-01-07 10:32
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
得分:0 
二维字符数组可以看作一个矩阵,第二维是一行的长度,决定存入字符串的长度。
第二个程序你是创建一个字符串指针的数组用来存放10个字符串的地址?应该改成p[i]=str[i]吧,这样才类型匹配。
2008-01-07 10:56
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
支持2楼3楼的程序.......
2008-01-07 15:21
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
C++那偶写了一篇类型匹配的问题,,,希望对你有帮助!

樱花大战,  有爱.
2008-01-07 15:40
NO.Tomato
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-1-5
收藏
得分:0 
我又回来了
上面的题目中p[i]与*(p+i)是等价的
而为什么str[i]与*(str+i)是等价的而不与str+i是等价的
谭浩强的《C语言程序设计》上面明明说str[i]与*(str+i)与str+i全是相等的

Let's do it now.
2008-01-07 17:04
jingru
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2006-11-16
收藏
得分:0 
回复 7# 的帖子
反问一下,  p 与 *p 等价吗? 那么 str +i 与 *(str +i ) 等价么 ?
2008-01-07 17:32
way3
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-12-8
收藏
得分:0 
回复 7# 的帖子
你看错了吧.没有这回事吧?
2008-01-07 17:37
way3
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-12-8
收藏
得分:0 
回复 3# 的帖子
支持你!
2008-01-07 17:41
快速回复:一个让人感觉矛盾的字符二维数组!!!
数据加载中...
 
   



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

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