指针数组
指针数组是数组,是一个存放指针(地址)的数组
int *arr1[10]; 数组arr1中放的是int*类型的指针
char *arr2[4]; 数组arr2中放的是char*类型的指针
char **arr3[5]; 数组arr3中放的是char**类型的指针
数组指针
数组指针是指针,指向一个大小确定、类型确定的数组
int (*p)[10] p先和*结合,说明p是一个指针变量,为指向一个大小为10个整型的数组的指针
注:1.不可将int (*p)[10]改为int (*p)[9] 原因:开辟空间不一样,其类型肯定不一样
2.二维数组降维为指向其内部元素类型指针 传参时可使用数组指针
注:判断数据是什么类型的时候主要看变量名最近符号优先级最高为此数据的类型。
函数指针
函数指针是指针变量,存放的是函数的地址
注:函数的入口地址是 函数名 或 &函数名
void *pfun2( ); 函数的声明
void (*pfun1)( ); 函数指针
int(*p[5])( ); 函数指针数组
int(*(*p)[5])( ); 函数指针数组的指针
int(*(*p[4])[5])( ); 函数指针数组指针的数组
(*(void(*)( ))0)( ); 函数调用 <强制类型转换为函数指针类型解引用为函数名 在加()为函数调用>
void(*signal(int,void(*)(int)))(int); 函数的声明
函数指针数组
将函数的地址存到一个数组中,这个数组就叫函数指针数组
int (*parr1[10])( ); 函数指针数组
解释:parr1先和[ ]结合,所以是数组,数组中内容为int(*)( )类型的函数指针
指向函数指针数组的指针
指向函数指针数组的指针是一个指针;指针指向一个数组,数组的元素都是函数指针