C函数基础篇

C函数篇

函数定义

​ 函数是一块代码,接收一个或多个参数,做一件事情,并返回零个或一个值

​ 函数头

void sum(int begin, int end)

​ 参数表

		(int begin, int end)

返回类型 (void) 函数名(sum)

void sum()

函数体 (即{}内的代码)

int i;
int sum =0;
for ( i=begin; i<=end; i++) {
    sum += i;
}
printf("%d到%d的和是%d\n", begin, end, sum);

void返回类型代表你可以return一个空值

没有返回类型代表这个函数不能return

调用函数

  • 函数名(参数值)
  • ()起到了表示函数调用的重要作用
  • 即使没有参数也需要()
  • 如果有参数,则需要给出正确的数量和顺序
  • 这些值会被按照顺序依次用来初始化函数中的参数

C在调用函数的时候,永远只能传值给函数

#include <stdio.h>

void cheer()
{
    printf("cheer\n");
}
int main()
{
    cheer();
    //cheer  错误无法调用

    return 0;
}

image-20200730211539575

image-20200730211437492

image-20200730211634687

初见函数

#include <stdio.h>
int main()
{
    int i;
    int sum;
    for ( i=1, sum=0; i<=10; i++) {
        sum += i;
    }
    printf("%d到%d的和是%d\n", 1, 10, sum);

    for ( i=20, sum=0; i<=30; i++) {
        sum += i;
    }
    printf("%d到%d的和是%d\n", 20, 30, sum);

    for ( i=35, sum=0; i<=45; i++) {
        sum += i;
    }
    printf("%d到%d的和是%d\n", 30, 45, sum);
    return 0;
}

代码复制是程序不良的表现

#include <stdio.h>
void sum(int begin, int end)
{
    int i;
    int sum =0;
    for ( i=begin; i<=end; i++) {
        sum += i;
    }
    printf("%d到%d的和是%d\n", begin, end, sum);
}
int main()
{
    sum(1,10);
    sum(20,30);
    sum(35,45);

    return 0;
}

从函数中返回值

int max(int a , int b)
{
    int ret;
    if ( a >b) {
        ret = a;
    } else {
        ret = b;
    }
    return ret;
}

ret表示return,为满足单一出口

  • return停止函数的执行,并送回一个值
  • return;(停止运行)
  • return 表达式
  • 一个函数可以出现多个return语句()

image-20200730200511990

没有返回值的函数

  • void函数名(参数表)
  • 不能使用带值的return
    • 可以没有return
  • 调用的时候不能做返回值的赋值

如果函数有返回值,则必须使用带值的return

函数先后关系

image-20200730201251324

函数原型

  • 函数头,以分号“;”结尾,就构成了函数的原型
  • 其目的就是告诉编译器函数的样子
    • 名称
    • 参数(数量及类型)
    • 返回类型
    • image-20200730205922985
#include <stdio.h>
void sum(int begin,int end); //声明  函数原型
/* void sum(int ,int );  */
int main()
{
    sum(1,10);
    sum(20,30);
    sum(35,45);

    return 0;
}
void sum(int begin, int end) //定义  实际的函数头
{
    int i;
    int sum = 0;
    for ( i=begin; i<=end; i++) {
        sum += i;
    }
    printf("%d到%d的和是%d\n", begin, end, sum);
}

本地变量

image-20200730214151364

image-20200730214226389

规则

本地变量是定义在内的

  • 函数块
  • 语句块
  • 甚至随便拉一堆大括号来定义变量
  • 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
  • 块外面定义的变量在里面仍然有效
  • 块里面定义了和外面同名的变量则掩盖了外面的
  • 本地变量不会被默认初始化
  • 参数在进入函数会被初始化

逗号运算符

f(a,b)—— ","表示标点符号

f((a,b))——","表示运算符,一个参数

关于main

image-20200730220628629


版权声明:本文为htf135688原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。