//////输入5个字符串,按由小到大的顺序输出(用指针做)
#include <iostream>
#include<string>
using namespace std;
void px(char *p[],int n)
{
char *a=p[0];
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(strcmp(p[i],p[j])>0)
{
a=p[i];
p[i]=p[j];
p[j]=a;
}
}
}
}
void main()
{
char *str[5];
for(int i=0;i<5;i++)
cin>>str[i];
px(str,5);
for(int i=0;i<5;i++)
cout<<str[i]<<" ";
}
哥哥,请问
PX函数中
,if(strcmp(&p[i],&p[j])>0)
{
a=p[i];
p[i]=p[j];
p[j]=a;
}
strcmp括号里p[i],p[j]已经是地址了。。再加一个&进行比较 可行么?而且a定义的是char a,,p[i]是地址,,可以赋值么
另外str=(char *)malloc(5*sizeof(char));是什么意思呀~~~
运行出来只显示第一个字母啊
str=(char *)malloc(5*sizeof(char)),str是个char *的指针类型,该指针指向了一个分配5个char类型元素的首地址,相当于定义char str[5]的数组
p[i],p[j]是char类型,而不是地址,&符号之后就是取值,这里p是char *指针类型,存储的是地址。p[i]就是char类型了。
另外运行结果是正确的,我不知道你那怎么只显示一个字母,你可以在最后加两句int i;cin>>i语句等待输入