c语言调用c的函数指针 c语言函数指针的使用

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

#includestdio.h

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于做网站、网站设计、那曲网络推广、重庆小程序开发公司、那曲网络营销、那曲企业策划、那曲品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供那曲建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

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语言中调用函数指针占用哪里的存储空间,被调函数运行时内部变量存在哪里,和直接调用函数有什么区别?

在程序运行时,一个函数占用一段连续的内存。当调用一个函数时,实际上是跳转到函数的入口地址,执行函数体的代码,完成后返回。

函数指针指向一个函数的入口地址,也就是函数存储空间的首地址。

在C语言中,数组名代表数组的首地址,同样函数名代表了函数的首地址,因此在赋值时,直接将函数指针指向函数名就行了。

因此函数指针调用vs直接调用,占用的存储空间都是一样的。相当于数组指针和数组名的关系,指向的都是同一个数组。

局部变量存在函数体里面,比如转换成8086汇编(示意):

func: 定义变量

push ax

pop ax

ret

main: call func

满意请采纳,谢谢!

C语言调用函数指针

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

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


标题名称:c语言调用c的函数指针 c语言函数指针的使用
标题来源:http://cdiso.cn/article/doeeidp.html

其他资讯