**
- 指针数组的概念
- 数组元素均为指针型数据,即指针数组中每一个元素的值都是一个地址
- 一维指针数组的定义形式:
类型名 * 数组名 [数组长度];
- 例: 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; //定义指向字符指针数据的指针变量p
char *name[]={″BASIC″,″FORTRAN″,″C++″,″Pascal″,″COBOL″};
p=name+2; //见图6.23中p的指向
cout<<*p<<endl; //输出name[2]指向的字符串
cout<<**p<<endl; //输出name[2]指向的字符串中的第一个字符
}
指针数组的元素也可以不指向字符串,而指向整型数据或单精度型数据等