有关指针、数组和函数的解析
- 数组指针
- 存放数组地址的指针.(可通过指针+i访问数组内部元素)
- eg: int a[4];
int (*pa) [4]=&a; // 数组指针变量pa存放数组a的地址。
(注:下标运算符“[ ]”优先级高于指针运算符“ * ”,这是区分数组指针和指针数组的依据)
正如下图所示:pa指向数组a[4]
- 指针数组
- 指针数组即数组内每个元素的内容都是地址
- eg: int a; int b; int c;
int * arr[3]={&a,&b,&c}; //此表达式表示:定义一个数组arr,其有三个元素,且每个元素都是一个 指向整型的指针。
正如下图所示:数组arr中每个元素类型均为int *,即:指向整型的指针。
- 函数指针
- 存放函数地址的指针
- eg: void fun()
{ printf("haha\n"); }
void (*pfun) ()=&fun; //定义函数指针pfun指向一函数,该函数的返回值为void,该函数参数列表为空。
- 函数指针数组
- 该数组的每一个元素为函数的地址。
- eg: void fun1( ); void fun2( ); void fun3( );
- 指向函数指针数组的指针
- 该指针指向一个函数指针数组
- eg: void (*apfun[3]) ();
void (*(*papfun)[3])( )=&apfun; //定义了一个函数指针数组的指针papfun,其指向一个内部有三个元素,且这三个元素的内容为返回值为void,参数列表为空的函数的地址。