在一些新手看来,指针有时候是数组,数组有时候也是指针,其实这根本就是错误的,指针和数组就是两回事,他们没有任何关
系,只是访问元素的形式相似罢了,下来我们来辨析几个概念:
1.指针数组
指针数组是指针还是数组,就看最后两个字,那就是数组,是一个存放指针的数组。
int *arr[10];
这里的arr就是一个指针数组。
2.数组指针
顾名思义,就是一个指向数组的指针。
int (*p)[10];
是不是和指针数组的表示方式很相似,其实区分是数组还是指针,就看p先和谁结合,[ ]的优先级高于*。
3.函数指针
就是一个指针,里面放的是函数的地址,例如 void (*fun)( );这里fun就是函数指针,函数的void类型,里面没有参数。
4.函数指针数组
根据上文知道,这是一个数组,里面存放的是函数指针,例如:int (*parr1[10]])(); 函数指针数组有很多用途,例如转移表。
5.函数指针数组的指针
void (*pfun)(const char*) = test; //函数指针的数组pfunArr void (*pfunArr[5])(const char* str); pfunArr[0] = test; //指向函数指针数组pfunArr的指针ppfunArr