指针数组
格式: 数据类型 *数组名[ 数组长度说明 ] eg: int *p[4];
例子——将字符串按顺序输出(从小到大)
#include <iostream>
using namespace std;
int main()
{
void sort(char *px,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 *px,int n)
{
int i,j,k;
char *temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(px[k],px[j])>0)
{
k=j;
}
if(k!=i)
{
temp=px[i];
px[i]=px[k];
px[k]=temp;
}
}
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<name[i]<<endl;
}
}
指针数组赋值与初始化
赋值
对于二维数组来说, 指针数组的每个元素仅需指向每行元素的第一位。
eg:
main()
{
int b[2][3],*pb[2];
pb[0]=b[0];
pb[1]=b[1];
}
初始化
可以在定义指针数组的同时初始化
main()
{
int b[2][3],*pb[]={b[0],b[1]};
}
指向指针的指针
指向指针数据的指针,称为指向指针的指针。
定义形式 char *(*p) 写成 char **p;
间址 单级间址(访问一次就可以找到数据)和二级间址 。
char s[]="dsaghjk",*q=s;
cout<<s<<endl;
cout<<*q<<endl; //通过数组s的首地址访问第一个字符
cout<<q<<endl; //输出数组s