指针数组
指针数组是数组,是一个存放指针的数组
定义一个指针数组:int *arr1[10];
[]的优先级高于 *
数组名代表整个数组有两种情况:
1. sizeof + 数组名
2. 取地址数组名
其他情况下数组名都表示整个数组
例如:arr+1 表示下一个元素的地址,这里的arr表示的是首元素的地址
&arr+1 表示下一个数组,这里的arr表示整个数组
数组指针
数组指针是指向数组的指针
整形指针:int *print;能够指向整形数据的指针
浮点型指针:float *pf;能够指向浮点型数据的指针
定义一个数组指针:int (*p)[10]
指针+1意思是加上所指内容类型的大小,*p+1即40
函数指针
函数指针保存函数地址的变量,是指针。
函数也有地址,是第一条指令的地址。
函数名=取地址函数名。函数名具有只读属性,只能做右值。
例如:void (*pfun1)(); 指一个返回值为空,参数列表为空的函数指针
void pfun2(); 指一个返回值为void 参数列表为空的函数
函数指针数组
数组是一个存放相同类型数据的存储空间。把函数的地址存到一个数组中,这个数组就叫函数指针数组。
定义一个函数指针数组:int (*parr1[10])();
()的优先级也高于 *
指向函数指针数组的指针
指向函数指针数组的指针是指针,指针指向一个数组,数组的元素都是函数指针。