//指針是C語言的精髓,隻有掌握好指針才算是真正學會了C語言,以下就是學習指針的例子
#include<stdio.h>
main()
{
void sort(char *name[],int n);
void print(char *name[],int n);
int strcmp1(char *str1,char *str2);
int strcmp2(char *str1,char *str2);
static char *name[]={"CHINW","CHINP","FRANC",
"FRANCE","GERMANY"};
int n=5;
sort(name,n);
print(name,n);
if(strcmp1(name[0],name[1])>0)
printf("%s,%s/n",name[0],name[1]);
if(strcmp1(name[2],name[3])<0)
printf("%s,%s/n",name[2],name[3]);
printf("That is ok!/n");
getch();
return 0;
}
int strcmp1(char *str1,char *str2)
{
char **p1,**p2; //定義兩個指向指針的指針的變量,可了解為位址的位址變量
int f=0;
p1=&str1; //給位址的變量賦待比較的字元串的位址值
p2=&str2;
for(;f==0&&(**p1!='/0'||**p2!='/0');(*p1)++,(*p2)++)//循環判斷字元串的操作
{
if(**p1<**p2)//比較每個字元的大小
f=-1;
else if(**p1>**p2)
f=1;
else f=0;
}
return f;
}
int strcmp2(char *str1,char *str2)
{
int f=0;
for(;f==0&&(*str1!='/0'||*str2!='/0');str1++,str2++)//字元指針變量完成for語句的操作
{
if(*str1<*str2)//比較單個字元的大小
f=-1;
else if(*str1>*str2)
f=1;
else f=0;
}
return f;
}
void sort(char *name[],int n)
{
int i,j,k;
char *pt;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp2(name[k],name[j])>0)
k=j;
if(k!=i)
{
pt=name[i];
name[i]=name[k];
name[k]=pt;
}
}
}
void print(char *name[],int n)
{
int i;
char **p;
char *format;
format="%s/n";
for(i=0;i<n;i++)
{
p=name+i;
printf(format,*p);
}
}