美文网首页
C语言函数指针

C语言函数指针

作者: AibWang | 来源:发表于2019-01-17 14:05 被阅读0次

如果定义了一个函数,那么在编译时,系统就会给该函数分配一段“内存空间”,这段内存空间的首地址称为这个函数的地址,而且函数名称就表示这个地址,函数指针就可以用来指向这个地址,使用函数指针调用函数就等价于使用函数名调用该函数。

函数指针的定义:

type (*p)(type1 var1, type2 var2, ... )

即为函数返回值类型 (* 指针变量名称)(函数参数列表)

函数指针作为结构体变量的一个元素,可以实现类似于面向对象语言的函数类的调用方式。

直接上一个例子,就能很方便的看清楚如何使用函数指针:

#include<stdio.h>
#include<stdlib.h>

typedef struct _treenode{
  int data;
  _treenode *lchild;
  _treenode *rchild;
} treeNode;

typedef struct _bintree{
  int size;
  int (*conpare)(int x1, int x2);
  treeNode *root;
} bintree;

bintree * bintree_initial(int (*conpare_func)(int x1, int x2)){
  bintree *mytree;
  mytree = (bintree *)malloc(sizeof(bintree)*1);
  mytree->size = 0;
  mytree->compare = conpare_func;
  mytree->root = NULL;
  return(mytree);
}

int intCompare(int x1, int x2){
  int y;
  if(x1 == x2) return 0;
  else if(x1>x2) return 1;
  else return -1;
}

void main(){
  bintree *tree1;
  int x1, x2;
  tree1 = bintree_initial(intCompare)
  //
  printf("Input 2 integers:");
  scanf("%d  %d",&x1, &x2);
  printf("%d   %d    %d\n", x1, x2, tree1->compare(x1, x2));
}

输入的两个参数为:23, 13
输出结果为:23,13,1

NOTE:函数指针不支持++--运算

参考:

http://c.biancheng.net/view/228.html
https://github.com/wangzheng0822/algo/blob/master/c-cpp/24_binarysearchtree/binarysearchtree.c

相关文章

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言基础及指针⑤动态内存分配

    接续上篇C语言基础及指针④函数指针 在上一篇我们了解C语言中的函数及函数指针 , 使用函数指针 , 模拟了网络请求...

  • C语言函数指针和指针函数

    C语言函数指针和指针函数 在学习C语言的过程中,“指针函数”和“函数指针”经常容易搞混了, 最简单的辨别方式就是看...

  • C语言指针导学(4)——分清函数指针和指针函数(转载)

    C语言指针导学(4)——分清函数指针和指针函数 http://blog.csdn.net/porscheyin/a...

  • C语言 - 中

    总目录 前言 本文介绍C语言的指针:一、指针介绍二、指针使用三、数组指针和指针数组 函数指针和指针函数 环境 1...

  • C语言----函数指针

    函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。 函...

  • C语言 函数指针

    浏览博客时看到这样一个函数,linux下的signal 函数:void ( signal( int sig, vo...

  • c语言-函数指针

    顾名思义,指向函数的指针。函数本身不是变量,但是可以定义指向函数的指针。可以被赋值,可以存放在数组中,传递给函数,...

  • C语言指针函数

    1、定义 指针函数是一个返回值为指针的函数 2、声明格式 数据类型 * 函数名称(参数){语句;} 3、代码找茬 ...

  • C语言函数指针

    如果定义了一个函数,那么在编译时,系统就会给该函数分配一段“内存空间”,这段内存空间的首地址称为这个函数的地址,而...

网友评论

      本文标题:C语言函数指针

      本文链接:https://www.haomeiwen.com/subject/jqhidqtx.html