使用自定义调试函数debug,控制输出不输出调试信息。
我们提供的服务有:成都网站设计、网站制作、微信公众号开发、网站优化、网站认证、凉城ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的凉城网站制作公司
下面的程序中,如果要不输出调试信息,则注释掉#define DEBUG,否则不注释它。
这个程序,要输出调试信息时,运行结果如下:
i=1 ; f=1
i=2 ; f=2
i=3 ; f=6
i=4 ; f=24
4!=24
其中前面四行都是调试信息。
如果不输出调试信息,运行结果如下:
4!=24
有的人使用__DEBUG__来代替DEBUG,也是一样的。
用__DEBUG__更安全一些(免得其它不小心用了DEBUG),但用DEBUG方便一些。
跟调用库函数一样,只不过这个自定义函数得你自己写,
如果自定义函数在main()函数之后定义的话,,就得在main()前先声明,main()中调用,main()后定义,如下简易代码:
#includestdio.h
void print(); //用户自定义函数声明
void main()
{
print(); //用户自定义函数调用
}
void print() //用户自定义函数定义
{
printf("函数已经被调用\n");
}
如果自定义函数在main()之前已定义,则只需要进行main()前定义,和main()中调用了,简单代码如下:
#includestdio.h
void print() //用户自定义函数定义
{
printf("函数已经被调用\n");
}
void main()
{
print(); //用户自定义函数调用
}
要在主函数中调用其他函数就在主函数中直接写出你的函数名(如果需要参数的话就传入参数就可以了)看下面voidmain(){tr();//因为你自定义这个函数不需要参数所以直接调用就可以了}其他函数调用也一样,一个函数可以调用另一个函数(不能调用主函数)
一,函数调用的一般形式为:
函数名(实参列表);
实参可以是常数、变量、表达式等,多个实参用逗号,分隔。
在c语言中,函数调用的方式有多种,例如:
在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参列表中各个参数是自左向右使用呢,还是自右向左使用。对此,各系统的规定不一定相同。
【示例】在vc6.0下运行以下代码。
运行结果:
8
7
6
7
可见vc
6.0是按照从右至左的顺序求值。如果按照从左至右求值,结果应为:
9
10
9
8
函数的嵌套调用
函数不能嵌套定义,但可以嵌套调用,也就是在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用,即在被调函数中又调用其它函数。
【示例】计算sum
=
1!
+
2!
+
3!
+
...
+
(n-1)!
+
n!
分析:可以编写两个函数,一个用来计算阶乘,一个用来计算累加的和。
#include
//求阶乘
long
factorial(int
n){
int
i;
long
result=1;
for(i=1;
i=n;
i++){
result
*=
n;
}
return
result;
}
//
求累加的和
long
sum(long
n){
int
i;
long
result
=
0;
for(i=1;
i=n;
i++){
//嵌套调用
result
+=
factorial(n);
}
return
result;
}
int
main(){
printf("1!+2!+...+9!+10!
=
%ld\n",
sum(10));
return
0;
}
二,有些自定义函数可能会被频繁的调用,所以写在一个c文件里是不太方便的。应该把这些自定义的函数写在一个c文件里,同时在一个头文件.h文件里声明。主函数可以通过引用该头文件然后调用需要的自定义函数。
1,举例:在头文件(.h)里声明自定义函数
2,在一个c语言文件里写下自定义函数的实现
3,在主函数中调用自定义函数
4,最后编译所有的涉及到的c文件,头文件可以不管