//若干个字符串按字母顺序由大到小输出
//指针数组,指针数组格式:int *p[ ]
代码如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
    void sort(char *name[ ],int n);   //函数声明
    void print(char *name[ ],int n);
    char *name[ ]={"BASIC","FORTRAN","C++","Pascal","COBOL"};//定义指针数组
    int n=5;
    sort(name,n);           //函数调用
    print(name,n);
    return 0;
}
void sort(char *name[ ],int n)      //sort函数是对字符串排序(选择排序法),形参name是指针数组名,接受实参数组name的首元素地址
{
    char *temp;
    int i,j,k;
    for(i=0;i<n-1;i++)
    {
        k=i;                                    //k指示关键字的最小位置记录 
        for(j=i+1;j<n;j++)
            if(strcmp(name[k],name[j])>0)k=j;
        if(k!=j)
        {
            temp=name[i];name[i]=name[k];name[k]=temp;//name[k]和name[j]是第k个和第j个字符串的起始地址
                }
    }
}
void print(char *name[ ],int n)     //name[0]和name[4]分别是各字符串(按从大到小顺序排好的字符串)的首地址
{
    int i;
    for(i=0;i<n;i++)
        cout<<name[i]<<endl;
}
注解:在main函数中定义指针数组name。它有5个元素,其初值分别是个字符串的起始地址。
print函数也可以写成以下形式:
void print(char *name[], int n)
{
int i=0;
char *p;
p=name[0];
while(i<n)
{
p=*(name+i++);
cout<<p<<endl;
}
}
其中,“*(name+i++)”表示先求*(name+i)的值,即name[i]的地址。将它赋给p,然后i加1.最后输出以p地址开始的字符串。
版权声明:本文是我原创文章,大家可以随意转载哦!!
原文地址:http://blog.csdn.net/jrz1900/article/details/47313891