温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言的函数怎么定义和使用

发布时间:2022-04-13 10:43:07 来源:亿速云 阅读:377 作者:iii 栏目:开发技术

本篇内容主要讲解“C语言的函数怎么定义和使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言的函数怎么定义和使用”吧!

    关于函数

    函数是C语言的基本单元,函数中包含实现程序功能的代码。

    C语言程序的入口位于main()函数之中,为了方便组织配合,调试和运行,一般是用main函数作为主调函数,通过调用其他的函数来实现程序的运行。

    他们的关系图如下:

    C语言的函数怎么定义和使用

    1. 函数的定义形式

    先给大家看看完整的函数代码格式,先有个大概印象

    int add(int a,int b);
    //这是函数声明,告诉系统有这样一个函数
    //注:如果函数写在main函数之前,那这句代码是可以省略的
    int add(int a,int b)
    {
    	int c=a+b;
    	return c;
    }
    • 函数头

    格式:

    返回类型 函数名 (参数1,参数2,…)

    对于上面函数例子int add(int a,int b)来说,add前面的int是返回类型,add是函数名,int a 是第一个参数,int b 是第二个参数。

    翻译: 定义了一个名为add的函数,向函数传入两个整形数据后,函数会返回一个函数内部处理后的整形数据。

    • 函数体

    函数名后带括号里的全部内容。函数体内部包括声明变量和执行完成函数功能的代码。

    解释: 这里声明了整形变量c,用c接受了参数a和参数b相加后的值,然后add函数返回c的值。

    2. 函数的声明

    函数的声明的告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体内容还是要看函数内部的功能代码。

    形式:

    返回类型 函数名 (参数) ;

    注意要有";"来结束声明。

    3. 返回语句

    在C语言学习中会经常看到这样一句代码return 0;这也是main函数的最后一句代码,其作用有以下两点:

    • 立即从当前函数中退出,返回到调运这个函数的程序中。

    • 将函数的返回值待会到调用这个函数的程序中。

    来给大家看个例子:

    //int Add5(int n);
    //这里的函数声明在main函数之前,可以省略上面一行的代码
    int Add5(int n)
    {
    	return n + 5;
    	//看看return后面的语句能不能被执行
    	printf("能执行的话吱一声");
    }
    
    int main()
    {
    	int a = 1,b=0;
    	 b = Add5(b);
    	 printf("%d", b);
    	 return 0;
    }

    C语言的函数怎么定义和使用

    return 后面的代码是不会运行的。

    4. 函数参数

    参数根据其传送的方式分为形式参数和实际参数两种。

    4.1 形式参数(传值调用)

    形式参数的作用就算传送数值,它把参数的数值传入函数,但参数本身的值是不会被函数修改的,前面举的例子都是用的形参(形式参数的简称)。

    下面给大家看看例子:

    void fuc(int n);
    //void类型即返回类型为空,不会有返回值,但还是会运行内部的代码。
    //这里的声明不能省!函数的定义在main函数下面。
    int main()
    {
    	int a = 10;
    	fuc(a);//将a的值传给了n
    	printf("%d", a);
    	return 0;
    }
    
    void fuc(int n)//这里是函数的定义
    {
    	n = 0;
    }

    C语言的函数怎么定义和使用

    结果打印a的值为10,没有被fuc()修改成0。

    4.2 实际参数(传址调用)

    实际参数是通过把参数的地址传到函数内部,函数通过地址直接修改实际变量的值,因此,实际参数是可以通过函数修改的。

    这里看看传递实参的效果:

    void fuc(int* n);
    //改动1 n的类型是指针,它存的是实际变量的地址
    int main()
    {
    	int a = 10;
    	fuc(&a);
    	//改动二 &为取地址符,直接获取变量的地址,这里是把a的地址传送到函数内部
    	printf("%d", a);
    	return 0;
    }
    
    void fuc(int* n)//改动三 其实和改动一是一样的
    //这里的变量是n,n的类型是int*,n现在是变量a的地址
    {
    	*n = 0;
    }

    对于*n = 0;

    *为解引用操作符,可以取出地址里面储存的值这里是把n中储存的地址对应的数赋值为0

    C语言的函数怎么定义和使用

    运行结果如下,a的值被更改为0

    C语言的函数怎么定义和使用

    4.3 无参数

    很多时候函数是不需要参数的,没有参数是不会影响函数运行的,一般打印菜单的话是不用设置参数的,这里随便给大家展示一下:

    void  Member_Menu();
    void  Member_Menu()
    {
    	printf("*******************\n");
    	printf("用户管理:>>\n请输入您想进行的操作:\n1.会员添加\n2.会员删除\n3.会员修改\n");
    }

    运行时函数的功能就是打印菜单。

    5. 函数的调用

    5.1 嵌套调用

    函数内部是可以再调用其他函数的。如:

    void fuc1()
    {  
     printf("函数1");  
     }
     void fuc2()
     {
     printf("函数2");
     }
     void fuc3()
     {
    	fuc1();
    	fuc2();
     }
     int main()
    {
    	fuc3();
    	return 0;
    }

    C语言的函数怎么定义和使用

    5.2 函数递归

    递归简单来说是自己调用自己,这种调用十分巧妙,它可以用少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

    递推实现的重点:

    • 找到递推公式

    • 设置结束标志

    现在给大家展示一下递归的使用:

    斐波那契数列:F(0)=1,F(1)=1,F(n) = F(n-1) + F(n-2) (n>=2)

    递归版本:

    int fib(int n)
    {
     if (n <= 2)         
     return 1;
        else
        return fib(n - 1) + fib(n - 2);
    }

    非递归版本:

    int Fib()
    {
    	int n,m=1,k,j,i=0;
    	scanf_s("%d", &n);
    	if (n == 0 || 1 == n)
    		i = 1;
    	if (n > 1)
    	{
    		for (k = 1, i = 1; k < n; k++)
    		{
    			j = i;//储存i即n-1
    			i += m;//n=n-1  +n-2
    			m = j;//m==f(n-2)变成n-1,也就是下一个的n-2
    		}
    	}
    	printf("%d", i);
    }

    到此,相信大家对“C语言的函数怎么定义和使用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI