【疑问】 一个小程序中的
#include <stdio.h>int main()
{
int sort (char *name[], int n);
int print (char *name[], int n);
//定义一个指针数组name,每一个元素指向一串字符.
char *name[] = {"Follow me", "BASIC", "Great Wall", "FORTRAN", "Computer design"};
int n=5;
sort (name, n);
print(name, n);
}
#include <string.h>
int sort (char *name[], int n)
{
int i, j, k;
char *t;
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)
{
t = name[i];
name[i] = name[k];
name[k] = t;
}
}
return (name, n);
}
#include <stdio.h>
int print (char *name[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("%s\n", name[i]);
}
}
关于这里if (strcmp(name[k], name[j])>0)我看书上讲得是:name[k]和name[j]是第k个和第j个字符串的起始地址. 那么这个if语句中的strcmp是在判断它们地址的大小吗? 这不对啊 strcmp应该是判断字符串的呀 正确的理解是什么?