十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
函数定义和函数调用是两个概念,函数定义 为f(int *arr),表示参数是一个整型指针,因此使用该函数时要传递一个地址,如变量int a=0; 调用函数f传递a的地址时需要写为f(a);而对于数组来说,如int b[]=[1,2,3], b本身就是数组首元素的地址,因此调用函数f传递数组首地址需要写为f(b)。
成都创新互联10多年成都定制网站服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都定制网站及推广,对成都工商代办等多个方面拥有丰富的网站设计经验的网站建设公司。
首先需要声明函数指针的类型(下例子中的typedef int (*fpFunt)(int a,int b),再定义某个函数(下例中的Add),在其参数列表中使用该函数指针类型,同时需要定义另一函数(下例中的fpAdd,注意该函数形式要和fpFunt一致,本例子中是返回一个整数,两个整型参数)作为实参用。这里在手机上使用易历知食软件内的微C程序设计来编程,举个两个数相加的例子,代码如下图:
调用后运行结果如下图:
在C语言中指针函数和函数指针是两个不同的概念,不能混淆。
指针函数本质上是函数,是一个返回类型为指针的函数,如:
int* max(int *array,int n)
{
//找最大值的地址
return 最大值的地址;
}
max就是一个指针函数。
而函数指针本质上是指针,是指向函数的指针,如:
int (*funp)(int a,int b);
funp就是一个函数指针,可以用它指向一个返回类型为int、有两个int类型的参数的函数。
选D
因为第一个参数是地址传递,fun(b,a);中传入a字符。*c=*c+1将c的值变为b字符。主函数的值改变。
第二个参数是值传递,所以在函数中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。