C语言指针相关解析
在C语言中除了一级指针和二级指针,还有一些比较常用但又比较拗口的指针类型。 比如:指针数组和数组指针。它们的名称只是前后顺序不一样,却有着千差万别,容我向大家徐徐道来。 先看两种定义:int *p[5], int(*p)[5]。 第一个是指针数组,由于"[ ]"的优先级高于“*”,所以p先和"[ ]"结合,构成了数组,后和"*"结合,成了指针数组。 指针数组依然是数组,只不过它里面存放的是指针。如图: 第二个是数组指针,在加了“()”后,p先与“*”结合,因此成为了数组指针。顾名思义,它是一个指针,指向p[4]数组 的首地址。 继续如图!: 函数指针:例如void(*fun1)( );函数指针是用来存放函数地址的变量,在函数中,函数的地址是入口地址,由函数名来表示。 函数指针比较好理解,因此不会赘言太多。 在函数指针的基础上,介绍一个定义: 函数指针数组,它是一个数组,用来存放一组函数的地址。 函数指针数组的一个简单应用:计算器 int (* p )[ 5 ]( int x , int y )={ 0 , add , sub , mul , div }; 其中int(*p)[5]()就是一个函数指针数组,这样调用函数时,特别方便,效率也高。 在函数指针数组的概念下,最后介绍一个顺口溜一般的类型: 函数指针数组的指针。它是一个指针,指向一个数组,数组里面存放函数的地址。 依次拆开