码迷,mamicode.com
首页 > 编程语言 > 详细

指针数组

时间:2015-08-06 13:22:56      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:指针   数组   

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

//指针数组,指针数组格式: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!