主题:[讨论]代码方面的2个问题,大家帮我看看,万分感谢,急着解决...
-------------------------------------------------------------------------
void sort(char *p[])
{
int i,j;
char *temp;
for(i=1;i<10;i++)
{
for(j=0;j<10-i;j++)
if(strcmp(*(p+j),*(p+j+1))>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
其中
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
为什么不可以用strcpy(temp,*(p+j))这中形式啊...
--------------------------------------------------------------------------
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int compare(const void* a,const void *b)
{
retrun strcmp(*(char**)a,*(char**)b);
}
char* list[5]={"cat","car","cab","cap","can"};
void main()
{
qsort((void*)list,5,sizeof(list[0]),compare);
for(int i=0;i<5;i++)
cout<<list[i]<<endl;
}
原型中qsort(void*,size_t nelem,size_t width,
int(*fcmp)(const void*,const void*));第三个参数不是指元素类型的长度么,应该用sizeof(char)但为何用sizeof(list[0]),那不成了指元素的字节数了么?
还有 retrun strcmp(*(char**)a,*(char**)b);中那么多星号怎么解释啊...
void sort(char *p[])
{
int i,j;
char *temp;
for(i=1;i<10;i++)
{
for(j=0;j<10-i;j++)
if(strcmp(*(p+j),*(p+j+1))>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
其中
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
为什么不可以用strcpy(temp,*(p+j))这中形式啊...
--------------------------------------------------------------------------
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int compare(const void* a,const void *b)
{
retrun strcmp(*(char**)a,*(char**)b);
}
char* list[5]={"cat","car","cab","cap","can"};
void main()
{
qsort((void*)list,5,sizeof(list[0]),compare);
for(int i=0;i<5;i++)
cout<<list[i]<<endl;
}
原型中qsort(void*,size_t nelem,size_t width,
int(*fcmp)(const void*,const void*));第三个参数不是指元素类型的长度么,应该用sizeof(char)但为何用sizeof(list[0]),那不成了指元素的字节数了么?
还有 retrun strcmp(*(char**)a,*(char**)b);中那么多星号怎么解释啊...