**
- 指针数组的概念
- 数组元素均为指针型数据,即指针数组中每一个元素的值都是一个地址
- 一维指针数组的定义形式:
类型名 * 数组名 [数组长度];
- 例: int* p[4];
- 可使指针数组中各个元素分别指向若干个字符串,使字符串处理更加灵活。
- 例:若干字符串按字母顺序由小到大输出
#include <iostream>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){ char *temp;int i,j,k;for(i=0;i<n-1;i++){k=i;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;}}}void print(char *name[],int n){ int i;for(i=0;i<n;i++)cout<<name[i]<<endl;}
- 例:若干字符串按字母顺序由小到大输出
指向指针的指针
定义:
char * (*p);char** p;
利用指针变量访问数据时间接访问
- 单级间址:在指针变量中直接存放目标变量地址;
- 二级间址:指向指针的指针。
- 例:指向字符型数据的指针变量
#include <iostream>using namespace std;int main( ){ char **p; //定义指向字符指针数据的指针变量pchar *name[]={″BASIC″,″FORTRAN″,″C++″,″Pascal″,″COBOL″};p=name+2; //见图6.23中p的指向cout<<*p<<endl; //输出name[2]指向的字符串cout<<**p<<endl; //输出name[2]指向的字符串中的第一个字符}
指针数组的元素也可以不指向字符串,而指向整型数据或单精度型数据等
