100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C语言自定义函数的调用

C语言自定义函数的调用

时间:2021-04-11 17:13:14

相关推荐

C语言自定义函数的调用

题目:求a的n次方-b的n次方

#include<stdio.h>int pow(int begin,int end);int main(void){int a,b,n,sum1,sum2;scanf("%d %d %d",&a,&b,&n);sum1=pow(a,n);//int pow中的return会返回一个值给调用 int pow的地方,因此//需要设置一个变量来接住这个值,如果不需要这个值,那么可以把该函数设置成void类型sum2=pow(b,n);//printf("%d",sum1-sum2); return 0;}int pow(int begin,int end){int sum=1;for(int i=0;i<end;i++){sum=sum*begin;}return sum;}

自定义函数的函数原型声明要写在#预编译和main函数之间, 函数原型声明要和自定义函数保持一致。(最后的分号不能忘)

函数声明是可以省略形参名字的,而函数定义则不能。我们拿一个例子来说明

#include<stdio.h>#include<assert.h>int add(int,int);//这个是函数声明,形参名可以省略int main(int argc,char *argv[]){int a=1,b=2;int c;printf("add is %d\n",add(a,b));return 0;}int add(int a,int b)//函数定义,不能省略。道理很简单。{//如果省略形参名的话,在函数体里该怎么使用他们呢?int c=0;c=a+b;//比如这里,如果我不说int a和int b,我用什么来表示他们呢?return c; // 所以这个时候形参名不能省略}

每个函数在被调用的时候,都会产生相应的复制变量(我们不如把他们称为替身演员吧)(术语一点就是传值?),在调用的函数里所有操作都是对这些替身演员做的。

替身演员们演的戏,跟我本明星有什么关系(www)

这也就是普通的swap并不会让a&b的值swap,只能通过指针来完成这样的工作。

如果还没学过指针,就这样理解吧。真正的a和b都在main中,派到自定义函数里的只不过是a和b的替身演员(不够准确,就这样粗略的理解吧)

#include<stdio.h>void swap(int *a,int *b);int main(void){int a=3;int b=4;swap(a,b);printf("a=%d b=%d",a,b);// a=3 b=4return 0;}void swap(int a,int b){int j;j=a;a=b;b=j;}

#include<stdio.h>void swap(int *a,int *b);int main(void){int a=3;int b=4;swap(&a,&b);printf("a=%d b=%d",a,b);// a=4 b=3return 0;}void swap(int *a,int *b){int j;j=*a;a=*b;*b=j;}

唯一有红色字的小标题。(如果你会了链表结合例子更好)/postedit/102489869

自定义函数中调用自定义函数

很显然是可以的,有一个非常经典的例子就是函数的递归。编译器在编译的时候,在你的自定义函数A里发现了一个自定义函数B,编译器会马上在你的源代码文件中寻找这个自定义函数B,找到了以后会把自定义函数A里的调用自定义函数B语句替换成自定义函数B 的语句

先来一个普通的例子

#include<stdio.h>void hello();void world();int main(int argc,char *argv[]){hello();return 0;}void hello(){printf("hello,");world();//在hello自定义函数中调用world自定义函数} void world(){printf("world!");}看看输出的是啥

递归应该算是一种特例,调用的函数刚好是它自己本身(itself)。因为递归像一个俄罗斯套娃,我们需要设置一些来让递归在恰当的时机结束(说人话就是要有条件判断)比如下面的例子,我们输出0-4。

#include<stdio.h>void numberPrint(int i);int main(int argc,char *argv[]){int i=0;numberPrint(i);return 0;}void numberPrint(int i){if(i<5)//这就是我们设置的条件,来让递归在恰当的时候结束{printf("now i is %d\n",i);i++;numberPrint(i);}}

怎么设置合适的条件呢?我的另一篇关于python自定义函数的blog里有写到。Python自定义函数(点一下这里就进入传送门了)进去以后往下面翻找函数的递归

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。