【C语言从零到入门】第十三节 函数

一、函数

函数是c语言的基本单位

观察下面的数学中的函数:

f(x) = x+1

现在我们把它变成C语言函数的格式:

double f(float x)
{
    return x + 1;
}
  • f 是函数名
  • double是函数的返回类型
  • x 是函数的参数,又称为形参
  • float 是参数x的类型
  • x + 1 是函数的返回值

二、函数的基本格式

函数返回类型  函数名(参数类型 参数名, 参数类型 参数名......)
{

    xxx

    return 返回值;

} 

1、函数名的命名规则

变量的命名规则相同

2、函数的返回值

  • 函数的返回值格式为 return 返回值(注意:return和返回值间有一个空格)

  • 函数的返回值类型可以是前面学过的基本数据类型(int、float、char等)、数组、字符串,以及将要学习的结构体、联合体、指针等,而且函数还有一个特殊的值类型:空值(void)。

  • void 表示返回值为空,我们再来看一下主函数

    void main()
    {
    
    }
    

    可以看到,它就是一个没有返回值的函数

  • 除了void型函数,其他所有类型的函数都必须有 return 语句。

3、return 语句

return 语句除了表示函数返回了一个数据,也标志着函数的结束

在return语句执行后,函数立即结束,且不会再执行后面的所有代码

虽然 void 型函数没有返回值,但它可以有 return 语句,不过它的后面没有任何数据:

void main()
{
    printf("Hello Worldn");
    return;
    printf("我不会被执行");
}

4、函数的参数

  • 函数的参数表示函数要"接收"的数据,参数类型表示“接收”的数据的类型,参数名是我们给接收到的数据起的名字,以便我们在函数中使用它。
  • 一个函数可以有0个或多个参数
int myFunction(int x, int y)
{
    return y - x;
}

上面的函数myFunction接收两个int类型的数据,且它的返回值是第二个参数减去第一个参数的值。

三、函数的调用

函数名(参数1,参数2…)

在调用函数时,向函数里传递的参数又称为实参

#include <stdio.h>

int sum(int x, int y)
{
    printf("现在进入了sum函数n");
    return x + y;
}

void main()
{
    int a = 2, b = 5;
    int c = sum(a, b); // 这里的a和b就称为“实参”
    printf("%d + %d = %d", a, b, c);
}

现在我们把sum函数和主函数交换一下位置

#include <stdio.h>

void main()
{
    int a = 2, b = 5;
    int c = sum(a, b); 
    printf("%d + %d = %d", a, b, c);
}

int sum(int x, int y)
{
    printf("现在进入了sum函数n");
    return x + y;
}

这时重新运行程序会就出现出现一条警告(sum函数未定义):

在这里插入图片描述

虽然这个程序能在dev-c++中运行,但这样写在某些编译器中不会运行,正确的做法是在main函数之前声明sum函数

#include <stdio.h>

int sum(int x, int y); // 声明了sum函数,表示它接收两个整型参数

void main()
{
    int a = 2, b = 5;
    int c = sum(a, b); 
    printf("%d + %d = %d", a, b, c);
}

int sum(int x, int y)
{
    printf("现在进入了sum函数n");
    return x + y;
}

四、函数的声明

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

可以看出函数的声明就是去掉了下方的函数体;

请看下面的sum函数:

int sum(int x, int y)
{
    return x + y;
}

它的声明是

int sum(int x, int y);

我们在声明函数时还可以省略形参的名称:

int sum(int, int);

在mian函数后面定义的函数必须声明,在main函数之前定义的函数可以声明,也可以不声明。

小练习

编写一个程序,输入一个整数,并输出它的阶乘。(要求使用函数完成)

  • 只有正整数和 0 有阶乘,规定0的阶乘为1
  • n 的阶乘为 1 x 2 x 3…n的积
  • 例如:3的阶乘是 1 x 2 x 3 = 6, 4的阶乘是1 x 2 x 3 x 4 = 24

参考答案

#include <stdio.h>

int fun(int);

void main()
{
    int a;
    printf("n = ");
    scanf("%d", &a);
    if(a < 0) 
        printf("负数没有阶乘");
    else
        printf("%d! = %d", a, fun(a)); // n! 表示n的阶乘 
}


int fun(int x)
{
    if(x == 0)
    {
        return 1;
    }

    int num = 1;
    for(int i = 2; i <= x; i++)
    {
        num *= i;
    }

    return num;
}


好了,文章到这里就结束了,我们下一节再见

点击查看更多【C语言从零到入门】系列

每周五晚20:00更新

原文链接: https://www.cnblogs.com/cloudsir/p/15317503.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    【C语言从零到入门】第十三节 函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/367844

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午6:00
下一篇 2023年3月2日 下午6:01

相关推荐