关于指针变量作为函数实参的问题。

来源:百度知道 编辑:UC知道 时间:2024/05/04 01:44:25
1.这句有什么用处,为什么会放到main上面 double tran(double (*)(double),double (*)(double),double);
2.如何理解指针变量作为函数实参

程序如下:(是一个求tan和cot的程序)
#include "math.h"
double tran(double (*)(double),double (*)(double),double);
main()
{double y,v;
y=tran(sin,cos,v);
printf("tan(60)=%10.6f\n",y);
y=tran(cos,sin,v);
printf("cot(60)=%10.6f\n",y);
}
double tran(double (*f1)(double),double (*f2)(doue),double x)
{return (*f1)(x)/(*f2)(x);}

main上面 double tran(double (*)(double),double (*)(double),double),是函数声明,告诉编译器这个函数将在后面实现,同时给编译器提供函数类型检查的依据,这样,在main函数内使用时编译器会检查你传入参数和返回类型是否符合声明。

关于指针变量作为函数实参,应该和数值变量作为实参一起理解;指针变量作为函数实参,函数内改变此参数将影响到传入的原参数的值;而数值变量作为实参,就不会影响到了,只是一个拷贝数值而已;这个问题的区分很重要!

例子自己可以试着编,很简单,我要吃饭所以就不演示例子了~~呵呵~~

回来后,puziguo提醒函数指针的问题,恩~,的确不错,函数指针是一个重要的概念,至少以后学C#时,对理解“委托”很有帮助;我只针对问题回答了,下次注意~呵呵~~

先要仔细看tran的函数声明啊

3个参数

前两个参数的类型不是指针变量,而是两个函数指针

一个函数在内存中也是有内存空间的,所以它也有首地址(也就是函数的入口),函数的函数名就是一个指针,指向的就是该函数的入口

具体的操作你可以参考下面的链接:

http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/566020.html