设为首页 加入收藏

TOP

函数与函数指针
2014-11-05 13:30:08 】 浏览:233
Tags:函数 指针

  在学习C++的回调函数机制时有一个关于函数名和函数指针的疑惑,如是就自己研究了下二者的关系。


  快速排序的原型:


  void qsort(void *base, size_t nelem, size_t width, int (_USERENTRY *fcmp)(const void *, const void *));


  可见qsort接受一个类型为_USERENTRY的函数指针fcmp,但是下面代码中qsort函数接受一个函数名,却不是一个函数指针。而函数名和函数指针的关系如何呢?


  代码


  #include


  #include


  int sort_function( const void *a, const void *b);


  int list[5] = { 54, 21, 11, 67, 22 };


  int main(void)


  {


  int x;


  qsort((void *)list, 5, sizeof(list[0]), sort_function);


  for (x = 0; x < 5; x++)


  printf("%i\n", list[x]);


  return 0;


  }


  int sort_function( const void *a, const void *b)


  {


  return *(int*)a-*(int*)b;


  }


  函数指针实际上就是该函数代码段开始的地址。其实,编译器对于函数名、函数指针都是转换为一个地址,这个地址就是该函数代码起始地址。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++学习中遇到的两个问题 下一篇tsockopt()函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目