概述
一:指针数组
“指针数组”首先是一个数组,存储的是指针。例如:
int *p[10];
对于这条语句,我们知道下标引用的优先级高于间接访问,所以他首先执行下标引用。因此,p是一个某种类型的数组,这个数组有10个元素。在取得数组的一个元素后随即进行间接访问操作,我们得到一个整型值。所以,p是一个数组,他的元素类型是指向整形的指针。
二:数组指针
“数组指针”首先是一个指针,指向的是数组。例如:
int (*p)[10];
对于这条语;因为括号的存在,所以间接访问的优先级高,所以它是一个指针。接下来是下标引用,所以p指向整型数组。
三:函数指针
函数指针是指向函数的指针,他指向函数。有了指向函数的指针变量后,可以用该指针变量调用函数。
int fun (int x); //声明一个函数;
int (*f)(int x);//声明函数指针;
f = fun;//将函数fun首地址赋值给函数指针;
或者:f = &fun;//把函数地址赋值给函数指针。
例子:下面三个表达式代表什么意思?
A ):char * (*fun1)(char * p1,char * p2)
B ) :char * *fun2(char * p1,char * p2);
C ) :char * fun3(char * p1,char * p2):
c):fun3是函数名,p1,p2是类型为char *的参数,函数的返回值类型是char *
B):与c相比,不同的是函数的返回值类型是char * *
A):这里fun1不是函数,而是指针变量,他指向一个函数,。这个函数有两个指针型参数,返回值也是一个指针。
四:函数指针数组
我们清楚char *(*pf)(char *p)定义的是一个函数指针。既然pf是指针,那么就可以存在数组里面。把该表达式修改一下:
char *(*pf[3])(char *p),这就是 定义了一个函数指针数组。pf是一个数组,数组存放3个指针,每个指针指向一个参数类型为指向字符的指针,返回类型为指向字符的指针的函数。
五 :函数指针数组的指针
函数指针数组的指针其实就是一个指针,只不过他指向一个数组,数组里存放的是指向函数的指针。
例如:char *(*(*pf)[3])(char *p)
pf是一个指针,指向一个包含3个元素的数组,这个数组存放的是指向函数的指针,这些指针指向一些参数类型为指向字符的指针,返回类型是指向字符的指针的函数。
最后
以上就是高兴香氛为你收集整理的指针,数组,函数,三者的恩恩怨怨的全部内容,希望文章能够帮你解决指针,数组,函数,三者的恩恩怨怨所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复