c语言函数指针指向函数 C 指针函数

c语言:关于指向函数的指针编程

#include stdio.h

专注于为中小企业提供做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业济宁免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

#include stdlib.h

#include string.h

void virtualFun(int choice, int n, char *str[], char *(*p)(int , char **));

char *maxs(int n, char *s[]);  //此函数通过指向函数的指针调用

char *mins(int n, char *s[]);  //此函数通过指向函数的指针调用

char *minc(int n,char *s[]);   //此函数通过指向函数的指针调用

void Menu();

char *(*func)(int n, char **);

int main() {

char *name[]={"FOLLOW ME","BASIC","GREAT WALL ","FORTRAN","COMPUTER DESIGN"};

int n=5;

char ch=0;

while (ch!=4) {

Menu();

ch = getchar();

getchar();//ignore '\n'

ch = ch - '0';

virtualFun(ch, n, name, func);

}

return 0;

}

void virtualFun(int choice, int n, char *str[], char *(*p)(int n, char **name)) {

switch(choice) {

case 1: //max string

p = maxs;

break;

case 2:

p = mins;

break;

case 3:

p = minc;

printf("[result is :%c]\n", *p(n, str)); //because the return is a char

default:

return;

}

printf("[result is :%s]\n", p(n, str));

}

char *maxs(int n, char *s[]) {

int i;

char *max = s[0];

for (i=1;in;i++) {

if (strcmp(max, s[i])0)

max = s[i];

}

return max;

}

char *mins(int n, char *s[]) {

int i;

char *min = s[0];

for (i=1;in;i++) {

if (strcmp(min, s[i])0)

min = s[i];

}

return min;

}

char *minc(int n, char *s[]) {

int i;

char ch = s[0][0], *p, *r=s[0];

for (i=0;in;i++) {

p = s[i];

while(*p++) {

if (*p0x20  ch*p) {

ch = *p;

r = p;

}

}

}

return r;

}

void Menu() {

char menu[] = "1  max string\n\

2  min string\n\

3  min char \n\

4  exit\n";

printf("%s", menu);

}

C语言——指向函数的指针

c语言中叫做回调函数,将函数指针(如max)作为函数的参数,函数(如fun)中调用这个参数指向的函数,

调用函数(fun)时看情况而给函数传入不同的函数指针

例如fun(a,b,min),那么fun函数调用执行三个参数就调用min函数

参数的定义要与传入的函数指针相匹配

例如fun(int,x,int y,(*p)(int,int)) 那么调用fun(a,b,min)时,min的参数必须是(int ,int)

C语言指针函数和函数指针详细介绍

01

指针函数通常是指函数返回值是指针的一类函数,如图所示。

02

函数指针是指指向某个具体函数的指针变量,在程序设计时可以用来调用某个特定函数或者做某个函数的参数。其形式一般如图:

03

指针函数与函数指针本质上的区别是,指针函数是一个带指针的函数,总的来说还是一个函数,如图就是一个带*name指针的函数

04

函数指针是指向函数的指针变量,本质上还是一个指针,其格式如下,可以看到和指针函数的格式非常像,所以一定要用心留意。

C语言的指向函数的指针的问题

函数指针就是一个函数的首地址,这个在汇编里面最好看明白了.

比如:int * a (int i, int j) ; 假设a的值是:0x3312FF80,,下面是汇编调用的例子.

push j

push i

call 0x33FF80

上面是调用方法,而int* a(int i, int j); 的返回值也很容易看出来,返回一个DWORD类型的一个指针而已.反汇编应该是 return n;这里的n是四个字节,应为返回是一个指针类型,在32位下指针就是4字节.

我有仔细研究了下你的问题,你是弄不明白 int* a() 和int (*p)() 吗?还是别的什么意思?请继续追问.

是否可以解决您的问题?


本文名称:c语言函数指针指向函数 C 指针函数
分享网址:http://pwwzsj.com/article/doosgss.html