网站建设资讯

NEWS

网站建设资讯

c语言调用函数指针,c语言函数指针用法

C语言指向函数的指针的调用

#includestdio.h

十年的官渡网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整官渡建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“官渡网站设计”,“官渡网站推广”以来,每个客户项目都认真落实执行。

int *d_bubblesort(int a[],int n)//数组长度为n的冒泡降序排序

{

int i,j;

int temp;

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

{

for(j=n-1;ji;j--)

{

if(a[j]a[j-1])

{

temp=a[j-1];

a[j-1]=a[j];

a[j]=temp;

}

}

}

return a;

}

void main()

{

int i;

int *p=NULL;

int a[10]={6,5,4,1,2,3,9,8,7,10};

int *(*fun)(int*,int);

fun=d_bubblesort;

p=fun(a,10);

for(i=0;i10;i++)

{

printf("%d\t",p[i]);

}

}

C语言 函数指针 的调用问题?函数指针 怎么用?最好有例子。。

#includestdio.h

//定义类型fun_ptr,它是一个函数指针,指向的函数返回值为int,参数为int

typedef int (*fun_ptr)(int);

//fun1

int fun1(int a)

{

printf("call fun1,pram=%d,return %d+1\n", a, a);

return a+1;

}

//fun2

int fun2(int a)

{

printf("call fun2,pram=%d,return %d+2\n", a, a);

return a+2;

}

int main(int argc, char *argv[])

{

int a = 10;

int s = 0;

//定义函数指针类型的变量p_fun

fun_ptr p_fun;

//指向fun1

p_fun = fun1;

//执行

s=p_fun(a);

printf("s=%d\n", s);

//指向fun2

p_fun = fun2;

//执行

s=p_fun(a);

printf("s=%d\n", s);

return 0;

}

执行结果:

C语言函数指针调用

void point(char *p){ p+=3; } //加上void比较好

char b[4]={'a','b','c','d'}, *p=b; //写在同一行,p是char*的

point(p);// 这里传递的是指针,在函数里面改指针是“临时变量”,不是局部变量

//临时对象不会被记录,如果改p指向的内存就可以被记录。

printf("%c\n", *p); // 输出结果为a,因为p是扔指向b[]其实位置

答案为a

C语言函数指针怎么用?

有函数: int fun(int a,int b);

要定义指向该函数的指针

对比指向 int a; 的指针

int *p; p = a;

p的定义是怎么来的?

首先要保证p是一个指针类型

写下(*p),

然后,考虑下p的基类型,

p的基类型就是变量a的类型int

将int 放在(*p)前面就行了

int (*p);

括号可以省略,就成了 int *p;

同理

想要实现 pf = fun;

(*pf) 将pf定义为一个指针,

将fun的类型作为pf的基类型

fun相当于一个 int (int a,int b)类型的量

int (int a,int b) (*pf);

基类型中有圆括号和中括号要后移

int (*pf)(int a,int b) ;//括号不能省略

pf = fun;

调用时

(*pf)(3,4); pf(3,4)都可以

C 语言中指针函数是如何调用的??

整个程序的目的是对一组数据进行求最大值、最小值或平均值的操作,通过输入的指令进行相应的操作。按照不用函数指针的思路,程序大概会写成这样:(以下为伪代码)

最大值函数{...}

最小值函数{...}

平均值函数{...}

main{

输入d,则调用 最大值函数

输入x,则调用 最小值函数

输入p,则调用平均值函数

}

不过可以发现如下几点:

· 三个函数的参数形式与返回值都是完全一样的

· 按上述方法写代码,每次调用都要写清楚参数,略显啰嗦

所以就使用函数指针来重新改写代码

GetOperation这个函数本身,就是根据输入指令找到对应的 操作函数并作为函数指针返回它,然后main里直接通过函数指针调用,调用代码只需要写一次,而且甚至不用关心这个函数指针代表的到底是哪个函数

这个程序里只有三个对数据的操作所以函数指针的优点不是很明显。假设有多大100种对数据的操作,如果不使用函数指针,就要不停地写if else if else if...,使用函数指针,甚至可以事先建立一个指令字符与操作函数指针的对应列表,运行时直接在列表里搜索抽取,代码就显得干净利索

GetOperation(c)(dbData,iSize)这句话的具体执行操作是:

(下面假设输入了c='d')

首先执行GetOperation('d'),该函数返回得到GetMax(的指针),再执行GetMax(bData,iSize),即对数据求最大值的操作,函数返回得到最大值

C语言调用函数指针

并不是不规范的问题,你子程序写法只能在子程序中输出正确的数据,而在主函数中无法得到交换过的x和y的值。参考程序运用指针让子程序去读写a和b的值,在子程序执行完成后,a和b的值确实得到了交换。

你的程序中子程序采用的不是指针类型参数,这样子程序无法将交换过后的值传回来。


本文标题:c语言调用函数指针,c语言函数指针用法
本文路径:http://cdweb.net/article/hdjdce.html