指针数组,数组指针,函数指针等的简单理解

何为指针数组,顾名思义,指针数组就是数组元素全为指针的数组称为指针数组,其本质为数组。也就是说它是一个用来存放指针的数组。一维指针数组的定义格式为:”类型名 *数组标识符[数组长度]”,例:int *arr1[10]。那么数组指针则是指针,是指向数组首元素的地址的指针,其本质为指针,其定义格式如下

“类型名” (*变量名)[数组长度]”,int (*p)[10]

如何更好地区分这两个定义呢?我们来看下面两个例子:

int *arr1[10]  由于[]的优先级高于*,所以arr1先与[]结合,然后再和*结合,即arr1是一个数组,它是用来存放指针的,即就是指针数组;

int (*arr2)[10]  由于该式子中有(),所以arr2先和*结合,再和[]结合,这就说明它是一个指针,指向的是一个大小为10个整型的数组,所以它是数组指针。

函数指针是指向函数的指针变量 因此首先是指针变量,该指针变量指向函数。有了指向函数的指针变量后,可用该指针变量调用函数。函数指针有两个用途:调用函数和做函数的参数

函数指针数组是一个数组,数组元素为函数指针。 例如char ( a[4])(char *p),该数组内有四个指向函数的指针;它的用途用来做转移表,以简单的加法为例:

int add(int x, int y)
{
    return x + y;
}

int main()
{
    int a = 0;
    int b = 0;
    printf("请输入两个数:");
    scanf("%d %d",&a, &b);
    int (*p)(int, int) = add(a, b);
    printf("%d\n", p);
    return 0;

}

猜你喜欢

转载自blog.csdn.net/qq_37415461/article/details/80802377
今日推荐