指针数组

//若干个字符串按字母顺序由大到小输出

//指针数组,指针数组格式: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!=i)
        {
            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地址开始的字符串。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值