我是靠谱客的博主 直率老师,最近开发中收集的这篇文章主要介绍C语言学习:函数的定义、类型、形参、实参、返回值等梳理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

函数概述

什么是函数? 函数(function)是用于完成特定任务的程序代码的自包含单元。
为什么使用函数?(1)函数可以省去重复代码的编写。如果程序中需要多次使用某特定的功能,编写一个合适的函数即可。(2)即使某种功能在程序中只使用一次,将其以函数的形式实现也是必要的,因为函数使得程序更加模块化,从而有利于程序的阅读、修改和完善。

编写一个简单的函数

/* lethead1.c */
#include <stdio.h>
#define NAME "GIGATHINK, INC."
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolis, CA 94904"
#define WIDTH 40

void starbar(void);  /*声明函数原型 */

int main(void)
{
    starbar();
    printf("%sn", NAME);
    printf("%sn", ADDRESS);
    printf("%sn", PLACE);
    starbar();       /* 函数调用 */
    
    return 0;
}

void starbar(void)   /* 函数的定义 */
{
    int count;

    for (count = 1; count <= WIDTH; count++)
        putchar('*');
    putchar('n');
}
  • starbar标识符在不同位置使用了三次,(1)函数原型告知编译器starbar( )的函数类型;(2)函数调用导致该函数的执行;(3)函数定义则确切指定了函数的具体功能。
  • 任何程序在使用函数之前都需要声明该函数的类型。
 void starbar (void);

圆括号表明starbar是一个函数名。第一个void是指函数类型,它的意思是该函数没有返回值。第二个void(括号内)表示该函数不接受任何参数。分号的作用表示该语句是进行函数的声明而不是定义。

  • 程序在main()中通过使用函数名后跟圆括号和分号的格式调用函数。
  • 程序中starbar()和main()具有相同的定义格式,即首先以类型、名称和圆括号开始,接着是开始花括号、变量声明、函数语句定义以及结束花括号。注意此时定义函数starbar ()后没有封号,这告诉编译器我们是在定义函数,而不是调用它或声明它的原型。
  • 把starbar()和main()包含在同一个文件中,也可以将他们放在不同的两个文件之中。单文件形式比较容易编译,而使用两个文件则有利于在不同的程序中使用相同的函数。
  • starbar()中的变量count是一个局部(local)变量。这意味着该变量只在starbar()中可用。即使在其他函数中使用名称count也不会冲突。

函数参数

  • 定义带有参数的函数:形式参数
 void show_n_char (char ch, int num)

这行通知编译器show_n_char ()使用名为ch和num的两个参数,并且这两个参数的类型分别是char和int。变量ch和num被称为形式参数或形式参量。如同函数内部定义的变量一样,形式产量是局部变量,他们是函数私有的。

带参数函数的原型声明

void show_n_char (char ch, int num);

当函数接收参数时,函数原型通过使用一个逗号分隔的类型列表指明参数的个数和类型。

调用带有参数的函数:实际参数

形式参量是被调函数中的变量,而实际参数是调用函数分配给被调函数变量的特定数值。
实际参数可以是常亮、变量或一个复杂的表达式。但无论何种形式的实际参数,执行时首先要计算其值,然后将该值复制给被调函数中相应的形式参量。

使用return从函数中返回一个值

调用函数到被调函数的通信,需要沿反方向传递信息时,可使用函数返回值。

/* lesser.c -- finds the lesser of two evils */
#include <stdio.h>
int imin(int, int);

int main(void)
{
    int evil1, evil2;

    printf("Enter a pair of integers (q to quit):n");
    while (scanf("%d %d", &evil1, &evil2) == 2)
    {
        printf("The lesser of %d and %d is %d.n",
            evil1, evil2, imin(evil1,evil2));
        printf("Enter a pair of integers (q to quit):n");
    }
    printf("Bye.n");
    return 0;
}

int imin(int n,int m)
{
    int min;
    if (n < m)
        min = n;
    else
        min = m;
  
    return min;
}

关键字return指明了其后的表达式的值即是该函数的返回值。

  • 也可以在函数的结尾使用以下语句:
return;

这个语句会终止执行函数并把控制放回给调用函数,因为return后没有任何表达式,所以没有返回值,这种形式只能用于void类型的函数中。

函数类型

函数应该进行类型声明,同时其类型应和返回值类型相同。而无返回值的函数应该被声明为void类型。
函数的声明是函数定义的一部分,但需要注意的是该类型指的是返回值类型,而不是函数参数的类型。

double klink (int a, int b)

以上语句表示函数使用两个int型的参数而返回值类型是double。
函数的声明要在使用函数之前进行。
不要把函数的定义和函数的声明混淆,函数的声明只是将函数类型告诉编译器,而函数定义部分则是函数的实际实现代码。

最后

以上就是直率老师为你收集整理的C语言学习:函数的定义、类型、形参、实参、返回值等梳理的全部内容,希望文章能够帮你解决C语言学习:函数的定义、类型、形参、实参、返回值等梳理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部