指针有关!

BLACKWATCH 2006-08-15 08:17:28
我的原意是要对字符串进行排序.交换的是指针.我是用c语言.
#include <string.h>
#include <stdio.h>
main()
{
char str[][4]={"aaa","bbb","ccc"};
char (*p)[4]=str;
int i;
void paixu(char (*p)[4]);
paixu(p);
for(i=0;i<3;i++)
printf("\n%s\n",p+i);
getch();
return 0;
}
void paixu(char (*p)[4])
{
char *t;
int i;
for(i=0;i<2;i++)
if(strcmp(*(p+i),*(p+i+1))<0)
{t=p+i+1;p+i+1=p+i;p+i=t;}
}

但是报错,请教各位了!
...全文
261 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hujingbobo 2006-08-17
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
int
main(void)
{
char *name[]={"aaa","bbb","ccc"};
char *p;

int i;
int j,k;
char *temp;
for(i=0;i<3;i++)
{
k=i;
for(j=i+1;j<3;++j)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i)
{
temp=name[i];name[i]=name[k];
name[k]=temp;
}
}
for(i=0;i<3;++i)
printf("%s\n",name[i]);
}

最后想对楼主说一声,函数的名字最好是用英文来表示他的含义,不要用拼音的形式
BLACKWATCH 2006-08-15
  • 打赏
  • 举报
回复
我是把他当作多维数组看的
BLACKWATCH 2006-08-15
  • 打赏
  • 举报
回复
我只知道p+i+1是行地址,但也是个地址啊,为什么又是char **,指针的指针?如何理解?
lj860603 2006-08-15
  • 打赏
  • 举报
回复
你认真分析一下,p+i+1等等的类型可以看做是(char **), 而t是(char *)型。相差一级啊。
BLACKWATCH 2006-08-15
  • 打赏
  • 举报
回复
什么叫类型匹配,不是都是地址吗?为什么字符串交换要用,strcpy ,这不是复制字符串吗?请教
lj860603 2006-08-15
  • 打赏
  • 举报
回复
如果想字符串交换地址,用strcpy(str1, str2);
lj860603 2006-08-15
  • 打赏
  • 举报
回复
t=p+i+1;p+i+1=p+i;p+i=t;

//这样肯定是错误的。类型不一样啊。t 和 *(p+i),*(p+i+1)类型才一致。
sankt 2006-08-15
  • 打赏
  • 举报
回复
#include <string.h>
#include <stdio.h>
#include<cstdlib>

void paixu(char (*p)[4])
{
char t[4];
int i;
int j;
for(i=0;i<2;i++)
{
for(j=0;j<2;++j)
{
if(strcmp(*(p+j),*(p+j+1))<0)
{
strcpy(t,*(p+j+1));
strcpy(*(p+j+1),*(p+j));
strcpy(*(p+j),t);
}
}
}
}
int main()
{
char str[][4]={"aaa","bbb","ccc"};

int i;

paixu(str);
for(i=0;i<3;i++)
printf("%6s\n",str[i]);

system("pause");
return 0;
}
Arthur_ 2006-08-15
  • 打赏
  • 举报
回复
char (*p)[4]=str;

p是指向一個有4個char類型數組的指針 ,str是數組指針,指針類型部匹配

改了再説-_#

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧