C语言指针问题161

来源:百度知道 编辑:UC知道 时间:2024/06/15 00:21:56
以下是将若干字符串按字母顺序由小到大输出
void sort(char *name[],int n) 这里可不加void吗?
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j; 这里是值的比较吗?还是指针?
if(k!=i)
{temp=name[i];name[i]=name[k];name[k]=temp;}这是里是name[i]的地址赋给temp还是值赋给temp?
}
}

main()
{
char *name[]={"C program","BASIC","Computer English","Word"};
int i,n=4;
sort(name,n);
for(i=0;i<n;i++)
printf("%s\n",name[i]);
}

第一处void是指不返回值给引用它的函数。要用,不用的话,一般也不会出错,但是会提示要返回一个值。

第二处是字符串比较,=0表示完全相符,>0表示左边的字符串大于右边的(第一个不同的字符的ASCII码)

第三处是赋给地址。字符串存储时存储的是地址,而非字符串。

函数都有返回类型,没有也要用void,但一般很少用void,用int,

这里肯定是字符串比较,看strcmp的定义就知道,

地址