指针和数组的组合

在一些新手看来,指针有时候是数组,数组有时候也是指针,其实这根本就是错误的,指针和数组就是两回事,他们没有任何关

系,只是访问元素的形式相似罢了,下来我们来辨析几个概念:

1.指针数组     

指针数组是指针还是数组,就看最后两个字,那就是数组,是一个存放指针的数组。

int *arr[10];   

这里的arr就是一个指针数组。


2.数组指针

顾名思义,就是一个指向数组的指针。

int (*p)[10];

是不是和指针数组的表示方式很相似,其实区分是数组还是指针,就看p先和谁结合,[ ]的优先级高于*。


3.函数指针

就是一个指针,里面放的是函数的地址,例如 void (*fun)( );这里fun就是函数指针,函数的void类型,里面没有参数。


4.函数指针数组

根据上文知道,这是一个数组,里面存放的是函数指针,例如:int (*parr1[10]])(); 函数指针数组有很多用途,例如转移表。


5.函数指针数组的指针

void (*pfun)(const char*) = test;
//函数指针的数组pfunArr
void (*pfunArr[5])(const char* str);
pfunArr[0] = test;
//指向函数指针数组pfunArr的指针ppfunArr


猜你喜欢

转载自blog.csdn.net/yc1515707718/article/details/79343608
今日推荐