**

    • 指针数组的概念
      • 数组元素均为指针型数据,即指针数组中每一个元素的值都是一个地址
      • 一维指针数组的定义形式:

    类型名 * 数组名 [数组长度];

    • 例: int* p[4];
    • 可使指针数组中各个元素分别指向若干个字符串,使字符串处理更加灵活。
      • 例:若干字符串按字母顺序由小到大输出
        1. #include <iostream>
        2. using namespace std;
        3. int main
        4. { void sortchar *name[],int n); //声明函数
        5. void printchar *name[],int n); //声明函数
        6. char *name[]={″BASIC″,″FORTRAN″,″C++″,″Pascal″,″COBOL″}; //定义指 针数组
        7. int n=5;
        8. sortname,n);
        9. printname,n);
        10. return 0; }
        11. void sortchar *name[],int n
        12. { char *temp;
        13. int i,j,k;
        14. fori=0;i<n-1;i++)
        15. {k=i;
        16. forj=i+1;j<n;j++)
        17. ifstrcmpname[k],name[j])>0
        18. k=j; ifk!=i
        19. { temp=name[i];
        20. name[i]=name[k];
        21. name[k]=temp;
        22. }
        23. }
        24. }
        25. void printchar *name[],int n
        26. { int i;
        27. fori=0;i<n;i++)
        28. cout<<name[i]<<endl;
        29. }
    • 指向指针的指针

      • 定义:

        1. char * (*p);
        2. char** p;
      • 利用指针变量访问数据时间接访问

        • 单级间址:在指针变量中直接存放目标变量地址;
        • 二级间址:指向指针的指针。
      • 例:指向字符型数据的指针变量
        1. #include <iostream>
        2. using namespace std;
        3. int main
        4. { char **p; //定义指向字符指针数据的指针变量p
        5. char *name[]={″BASIC″,″FORTRAN″,″C++″,″Pascal″,″COBOL″};
        6. p=name+2; //见图6.23中p的指向
        7. cout<<*p<<endl; //输出name[2]指向的字符串
        8. cout<<**p<<endl; //输出name[2]指向的字符串中的第一个字符
        9. }
    • 指针数组的元素也可以不指向字符串,而指向整型数据或单精度型数据等