首页 > 其他分享 >【C语言基础语法】5. 函数

【C语言基础语法】5. 函数

时间:2023-08-23 16:36:37浏览次数:37  
标签:return 函数 形参 int C语言 语法 printf 返回值

一、函数概述

1.1 函数的作用

  • 函数的使用可以省去重复代码的编写,降低代码重复率
  • 函数可以让程序更加模块化,从而有利于程序的阅读,修改完善

1.2 函数的调用:产生随机数

调用函数时,需要关心:

  • 头文件:包含指定的头文件
  • 函数名字:函数名字必须和头文件声明的名字一样
  • 功能:需要知道此函数作用后才能调用
  • 参数:参数类型要匹配
  • 返回值:根据需要接受返回值

每次结果都一样,不够随机。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a;
    a = rand();
    printf("a=%d\n", a);
    return 0;
}

优化后:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int a,tmp;
    tmp = time(NULL);//获取系统当前时间
    printf("tmp=%d\n", tmp);
    srand(tmp);//设置系统时间为随机数种子
    a = rand();//生成随机数
    printf("a=%d\n", a);
    return 0;
}

1.3 函数定义格式

一般形式:

返回数据类型 函数名(形式参数列表)
{
    数据定义部分;
    执行语句部分;
    返回部分;
}

1.4 函数的组成

  • 函数名:见名知意,后面()
  • 形参列表:类型 变量名
  • 函数体:函数功能代码块
  • 返回值:return 变量;(变量类型需要和函数定义时的返回类型一致)

二、函数的执行

2.1 函数执行流程

  • 程序开始会先执行main
  • main函数中调用其他函数:先检查函数有没有定义;再检查函数原型;执行其他函数中的代码
  • main函数会接收其他函数的返回值并向下运行

2.2 函数的形参和实参

  • 函数定义时写在()中的是形参。
  • 函数调用时传递的参数时实参。

2.3 无参函数和有参函数和有返回值函数调用

  • 无参无返回值函数的定义和调用
#include<stdlib.h>
//函数的定义不能定义在函数的代码块里,必须在函数的外面定义函数
//符号加()代表这个是一个函数
//如果定义的函数没有形参,可以不填,也可以写void,但是返回值如果没有,需要写void
//  无参无返回值函数
//函数{}是函数体,所有的代码必须放在{}中
//函数结束之前需要返回值
//注意:返回值的类型看函数定义时,所需要的类型
void fun()
{
        printf("hello fun\n");
        printf("hello dfafa\n");
        return;
}
int main()
{
        printf("hello main\n");
        //函数的调用  函数名+()
        fun();
        system("pause");
        return 0;
}
  • 有参无返回值的定义和调用
//定义一个有参无返回值函数
//函数定义时()里面的参数叫形参,(因为这个形参只是形式上的参数,定义函数时没有给形参开辟空间)
//形参只有在被调用时才会分配空间
//形参 的定义  类型名+变量名
void  fun2(int  a, int  b)
{
        int c = 0;
        c = a + b;
        printf("a+b=%d\n",c);
        return;
}
int main()
{
        printf("hello main\n");
        //函数的调用  函数名+()
        //fun();
        //函数调用有参函数时,不可以不传参
        //调用函数时.()里面的参数叫实参,
        //实参的类型和形参的类型必须一致
        //函数调用时,实参的个数应该和形参的个数相同
        //实参为常量,可以为变量,可以为表达式,只要实参的类型和形参的类型匹配即可
        int x = 10;
        int  y = 20;
        //fun2(2,3)
        fun2(x,y);
        //fun2(x + y, x*y);
        system("pause");
        return 0;
}
  • 有参有返回值
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//有参有返回值
int  fun3(int  a, int b)
{
        int c = a + b;
        return c;
        //return  a + b;
}
int main()
{
        int  x = 10;
        int  y = 20;
        int  sum = 0;
        //调用有返回值函数时,可以不接返回值,也可以接
        //注意  返回的类型和所接收返回值的变量的类型需要相同
        //参数的传递,只能是单向传递(实参传给形参)
        //sum = fun3(x, y);
        printf("sum=%d\n",fun3(x,y));//将函数调用的返回值作为其他函数的参数
        system("pause");
        return 0;
}

2.4 函数的声明

  • 声明的作用就是告诉编译器这个东西在其他地方定义
  • 函数的声明,把函数的定义形式放在调用之前
  • 没有函数体就是函数的声明,有函数体就是函数的定义
  • 函数声明不用写函数体
  • 声明函数时需要加分号
  • 函数的声明不加extern 也是可以的
int main()
{
        int  x = 10;
        int  y = 20;
        int  sum = 0;
        //注意  返回的类型和所接收返回值的变量的类型需要相同
        //参数的传递,只能是单向传递(实参传给形参)
        //sum = fun3(x, y);
        //printf("sum=%d\n",fun3(x,y));//将函数调用的返回值作为其他函数的参数
        void swap(int a, int  b);
        swap(x,y);
        printf("x=%d   y=%d\n",x,y);
        system("pause");
        return 0;
}
void swap(int  a, int  b)
{
        int  c = a;
        a = b;
        b = c;
        printf("a=%d  b=%d\n", a, b);
        return;
}

2.5 return  和exit函数的区别

  • return  结束当前所在的函数

如果return在子函数中调用只会结束子函数,如果return在main函数中,会结束整个程序

  • exit 是一个库函数,用来结束整个程序

不管exit在哪里调用,都会结束整个程序


标签:return,函数,形参,int,C语言,语法,printf,返回值
From: https://blog.51cto.com/u_16182859/7204170

相关文章

  • 无涯教程-PHP Online Quiz函数
    以下测验提供与PHP相关的多项选择题(MCQ)。您将必须阅读所有给定的答案,然后单击正确的答案。如果您不确定答案,则可以使用显示答案按钮检查答案。您可以使用下一个测验按钮检查测验中的新问题集。Q1-关于PHP,以下哪项是正确的?A-PHP可以访问cookie变量并设置cookie。......
  • SG函数
    SG函数先定义,SG函数对应有向无环图(DAG)上的一种游戏:有一枚棋子在起点上,每次可以沿着边往后移动,谁无法移动谁就输了。公平组合游戏可以转换成他,只需要将局面中的所有状态看成一个节点,合法行动看成有向边。判断必胜需要求解的就是起点的SG。对于终点(没有出边),\(SG=0\)。对于其......
  • 无涯教程-PHP Interview Questions函数
    亲爱的读者,这些PHP编程语言面试问题是专门设计的,目的是让您熟悉在采访中可能会遇到的关于PHP编程语言主题的问题的性质。根据我的经验,优秀的面试官几乎不会计划在面试过程中提出任何特定的问题,通常,问题是从该主题的一些基本概念开始的,然后根据进一步的讨论和您的回答继续......
  • 两种修改字节码改变函数执行方式
    1示例publicReturnTypefunction(){try{Object[]args=newObject[]{};RetbeforeRet=callOnBefore(args...);//返回对象if(beforeRet.state==1){return(ReturnType)beforeRet.respo......
  • 编写C语言头文件的艺术
       参考:C语言编程标准头文件格式推荐及其含义解释(#ifndef,#define,extern“C“,#endif)_c语言头文件格式_huangbinvip的博客-CSDN博客......
  • 无涯教程-PHP - 错误处理函数
    这些是处理错误处理和日志记录的功能。它们使您可以定义自己的错误处理规则,以及修改错误记录方式。运行时配置这些功能的行为受php.ini中的设置影响,这些设置在下面定义。NameDefaultChangeableChangelogerror_reportingNULLPHP_INI_ALLdisplay_errors"1"PHP_INI_ALL......
  • Swift-基础语法之变量&常量&元组
    使用 let来声明一个常量,用 var来声明一个变量。常量的值在编译时并不要求已知,但是你必须为其赋值一次。这意味着你可以使用常量来给一个值命名,然后一次定义多次使用varmyVariable=42myVariable=50letmyConstant=42常量或者变量必须拥有和你赋给它们的值相同的类型。不......
  • Python中的if-else语法糖
    Python中的if语句是用于条件控制的一种语法结构,可以根据条件的真假来决定程序的执行路径。在Python中,if语句的语法如下:if条件:执行语句块其中,条件是一个返回布尔值的表达式,如果条件为True,那么执行语句块中的代码;如果条件为False,则跳过语句块。除了基本的if语句外,Python还......
  • 无涯教程-PHP - preg_split()函数
    preg_split()-语法arraypreg_split(stringpattern,stringstring[,intlimit[,intflags]]);preg_split()函数的操作与split()完全相同,只不过正则表达式被接受为pattern的输入参数。如果指定了可选的输入参数limit,则仅返回子字符串的限制数量。标志可以是以下标志......
  • 5、oracle迁移到postgres-oracle中使用的`nvl`函数更改为统一的`coalesce`函数
    目录oracle迁移到postgres-oracle中使用的nvl函数更改为统一的coalesce函数1、oracle的nvl函数2、postgre的coalesce函数oracle迁移到postgres-oracle中使用的nvl函数更改为统一的coalesce函数nvl函数与coalesce函数都是值非空时,给默认值,oracle中也存在coalesce函数1、oracle的......