您的位置:首页 > 其它

一个复杂的声明,包含数组指针,指针数组,函数指针和指针函数的区别

2013-10-26 15:43 489 查看
  这个例子其实很少用到,举这个例子的目的只是为了分清楚一些概念性的东西,真正的编程中估计任何人也不想遇到这样的问题

  题目:定义一个包含N个指向返回指向字符指针的函数的指针的数组?

   如果哪家公司那这个做面试题,真的是很没有意义

  我们首先来分解这个题目

  (1) 包含N个指针的数组,我们知道在形式上数组指针和指针数组的区别是数组指针是一个指针,所以指针的优先级高,需要用括号包含,char (*p)
,而指针数组数组的优先级高,所以形式为char *p
;指针的数组其实就是指针数组,

(2)指向字符指针的函数,这里就牵涉到了指针函数和函数指针的问题,指针函数式形如int *f(),首先指针函数是一个函数,只不过是这个函数值的返回值是一个地址,函数的返回值必须使用同类型的指针变量来接收,也就是说指针函数一定有函数返回值,而且在主调函数中,函数的返回值必须赋给同类型的指针变量

  例如:int *p();int *ptr;ptr=p();

  而函数指针是形如int (*p)(),主要用于回调函数,至于回调函数的概念可以参考本博客的回调函数这篇文章,

  注意指针函数和函数指针的表示方法不同,最简单的辨别方法是函数名前面的指针符号*有没有被()包含,包含就是函数指针,不包含就会说指针函数,函数指针是一个指针,指针函数是一个函数。

 返回指向字符指针的函数,首先是一个函数,函数的返回值是指向字符指针的,这个明显是指针函数的概念,char *(*p
)()

  (3)所以综合上面两项,将其合并  char *(*(*p
)())()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐