您的位置:首页 > 其它

指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解

2017-05-11 00:38 483 查看
指针数组:数组元素全为指针的数组称为指针数组。

一维指针数组的定义形式为:“类型名
*数组标识符[数组长度]”。例如,一个一维指针数组的定义:int *ptr_array[10]。[10]代表的就是存放了10个int*类型的指针

数组指针:数组指针是指向数组地址的指针,其本质为指针;例:int
(*p)[10]; p即为指向数组的指针,又称数组指针。[10]代表的就是这个数组指针所指向的数组有十个元素。要想调用这十个元素,可以*p[0][1],p[0][1]....。或者(*p)[0],(*p)[1]...。

数组指针和指针数组的区别:数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动); 指针数组是数组元素为指针的数组,其本质为数组。例如:int
*p[2]是指针数组,实质是一个数组,里面的两个元素都是指针, []的优先级比*的优先级高,p先与[]结合,形成数组p[2],有两个元素的数组,再与*结合,表示此数组是指针类型的,每个数组元素相当于一个指针变量。

函数指针:函数指针是指向函数的指针变量
因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数

int (*p)(int int) = add

函数指针数组:函数指针数组其实也是数组,只不过存储的数据类型是函数指针。

int (*p[10])(int int);
因为[]优先级比*级别高,因此p先于[]结合,是一个数组,然后再与*结合,是一个指针数组。[10]就是存放了10个int *(int int)类型的数据。
指向函数指针数组的指针:它和数组指针类似,只不过它指向的数组元素是函数指针类型。
int (*arr[3])(int int) = {NULL,Sub,Add};//三个函数地址
int (*(*p)[3])(int int) = &arr;
*p[1](1,2);就是调用Sub这个函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐