【C】深入浅出之指针

1、指针数组

char * str[10];

  指针数组,顾名思义是一个数组,其元素是一个指针。上述代码是定义一个指针数组,其数组元素为指向字符的指针。所谓指针数组,重头戏在于数组,指针可以抽象为修饰符,那么如何来理解指针数组呢?很简单,[]的优先级高于*,因此[]先被结合,加上数组名,就构成了数组。

2、数组指针

int (* p)[10];

  数组指针,顾名思义是一个指针,其指向一个数组。上述代码是定义一个数组指针,其指向一个大小为10个整型数字的数组。所谓数组指针,重头戏在于指针,数组可以抽象为修饰符,那么如何来理解数组指针呢?很简单,()的优先级高于[],而()内部是一个指针变量,这样就可以判断是数组指针了。

3、函数指针

int (* fun)();

  函数指针,顾名思义是一个指针,其指向一个函数。上述代码是定义一个函数指针,其指向一个函数。所谓函数指针,重头戏在于指针,函数可以抽象为修饰符,那么如何来理解函数指针呢?很简单,()的结合性为从左到右,第一个()内部是一个指针变量,第二个()是函数调用操作符,它迫使间接访问在函数调用之前进行,使得fun成为一个函数指针,它指向的函数返回一个整型值。

4、函数指针数组

int (* fun[])();

  函数指针数组,顾名思义是一个数组,其数组元素为一个指向函数地址的指针。上述代码是定义一个整型函数指针数组,其数组元素为一个指向函数地址的指针。所谓函数指针数组,重头戏在于数组,函数指针可以抽象为修饰符,那么如何来理解函数指针数组呢?很简单,()的结合性为从左到右,第一个()内部是一个指针数组,第二个()是函数调用操作符。

5、函数指针的数组的指针

int (* (* fun)[])();

  函数指针的数组的指针,顾名思义是一个指针,其指向一个数组,数组元素为一个函数指针。上述代码是定义一个整型函数指针数组指针,其指向一个函数指针数组。

猜你喜欢

转载自blog.csdn.net/sustzc/article/details/80179372