回复 10楼 m21wo
嗯,谢谢你~ 我对我上面的程序象下面解释不知道有没有问题~#include<stdio.h>
#include<string.h>
//#include<math.h>
//#define uint unsigned int
//#define N 10
int sort(char (*p)[5])//可能是因为行地址和首地址是同一个值,所以就不能改变
{
int i;
char (*p1)[5];
p1 = NULL;
for (i=0; i<3; i++)
{
if (strcmp(p[i],p[i+1])>0)
{
p1 = *p[i+1]; //改变首个字符,后面的没有变
*p[i+1] = *p[i];
*p[i] = p1;
/*
p1 = *p; // 单个元素值赋给了一个指向数组的指针变量,这是错误的;
p = *(p+i);
(p+i) = *p1;
*/
}
}
return 0;
}
int main(void)
{
int i;
char a[6][5];
printf("please input five string\n");
for (i=0; i<6; i++)
{
scanf("%s",a[i]);
}
sort(a);
for (i=0; i<5; i++)
{
printf("%s\n",a[i]);
}
return 0;
}
我这样解释我这程序对不对呢?
[ 本帖最后由 xiaodeo 于 2010-10-25 23:18 编辑 ]