一、指针数组
指针数组实质上是一个数组,数组元素是指针,如下所示:
int *p[]; //数组元素是整型指针,与直接定义数组一样,可以不指明元素个数
int *p[n];
char *p[]; //数组元素是char指针
char *p[n];
例1:
//指向char指针的数组用的最多
char *p[] = {"Hello C++","I am Jalen!","Nice to meet you!"};
cout<< p[0]<<'\n'; //输出p[0]的值
例2:
int a,b,c;
int *p1[] = {&a,&b,&c};
int x[4],y[4],z[4];
int *p2[] = {x,y,z};
cout<<*p1[0]<<'\n'; //输出p1[0]的值
二、数组指针(多维数组)
其实直接称数组指针不好理解,说白了,数组指针就是一个多维数组,
一般来说,除数组的第一维(下标)可以不指定大小外,其余各维都必须明确指定大小。所以数组指针形式如下:
int (*p)[13];
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int (*p)[4];
p = a;
cout<<*(*(p+i)+j)<<'\n'; //输出第i行,第j列的元素值
cout<<p[i][j]<<'\n'; //输出第i行,第j列的元素值
三、函数指针
int *p(void); //表示函数,此函数无参,返回整型指针。
int(*P)(void) ;//表示函数指针,可以指向无参,且返回值为整型指针的函数。
例:
int max(int x,int y)
{
int z;
if(x>y) z = x;
else z = y;
return(z);
}
int main()
{
int max(int,int);
int (*p)(int,int);
p = max;
int c = (*p)(1,2);
cout << a<< b << c << '\n';
return 0;
}