C语言-入门-基础-语法-[主函数,头文件](二)

x33g5p2x  于2022-07-04 转载在 其他  
字(2.5k)|赞(0)|评价(0)|浏览(490)

一般来说,C语言的一个程序,是由头文件和主函数组成。

头文件

下面这条代码我们这个程序的头文件。

#include <stdio.h>

这是一条预处理指令,告诉编译器在运行之前要做一些预处理工作。通俗来讲就是把stdio.h的内容原封不动地导入第一行。
如果我们想实现一些基本功能,比如说printf()输出,那我们就必须在开头写上这句代码,不然程序就会出错。头文件不止这一个

比如:

  • ctype.h定义字符处理函数,例如判断字符是否空白字符、字符大小写转换;
  • math.h定义数据函数,例如计算三角函数值、指数幂、对数、绝对值、平方、取整、求余等;
  • stdio.h定义各种输入输出,包括标准输入输出、文件读写、格式化输入输出等;
  • stdlib.h定义一些通用函数,例如内存分配和释放、字符串和数字类型互相转换、随机函数、排序、查找函数等;
  • string.h定义字符串处理函数,例如求字符串长度、字符串复制、字符串比较、字符串查找等;
  • time.h定义时间和日期处理函数,例如获取当前时间。

注:以上是常用的标准库头文件,其它后续用时介绍。

#include指令两种写法区别

  • #incldue <stdio.h>表示在系统路径中寻址标准库定义的stdio.h文件;
    -#include "stdio.h"表示先在当前程序目录下搜索自定义的stdio.h头文件,如果找不到,再去系统路径中寻找;
  • 如果是自己写的头文件,用双引号"",如果是用标准库或系统定义的头文件,使用尖括号<>

什么是主函数?

首先,主函数main,一个标准的主函数如下:

int main()  //  这是主函数
{
    return 0;   //  主函数返回值
}

main翻译成中文是主要的、最重要的意思,而在C语言里面表示一个主函数。(稍后我们会讨论什么是计算机语言里面的函数,以及主函数在C语言程序中的存在意义。)双斜杠后面的为注释,打一个比较形象的比喻,注释就类似于老师在作业本上的批注。

一般来说,注释用于标注这段代码的用途或解释思路等。因为注释不会被当做代码进行编译,所以无论添加什么注释内容,都不会对代码的实际运行产生任何影响。

如上代码中,用注释标出了哪里为主函数,哪里是函数的返回值。

什么是函数?

我们先谈谈什么是函数?在大家的认知里面,函数是数学领域的一个名词,它可能是如下图所示:

但是,这只是数学领域中的函数,与编程语言中的函数完全不同。

在编程语言里面,你可以把函数看做一个盒子,这个盒子有如下几个特性:

  • 开始执行时,函数可以被输入一些值
  • 执行过程中,函数可以做一些事情
  • 执行完成后,函数可以返回一些值

让我们看看我们的这个主函数,在这3个特性上,分别做了什么。

其中,int表明了函数的返回值类型,int是integer(整数)的缩写。main是函数名,main后面的括号()内为输入参数,目前为空。return后跟函数的返回值,为0。而0是一个整数,和函数名前面的int对应。
我们总结一下函数的写法公式:

函数返回值类型 函数名(函数输入参数值)  
{
    做点什么事情
    return 函数返回值;
}

写一个自己的函数

我们不如趁热打铁,根据上面的函数写法的公式,写一个两个整数加法的函数。这个函数需要做到:输入两个整数,返回他们相加的结果。这个既然这个函数是用于计算加法的,我们把函数名取名为add。当然自定义函数的函数名可以按照自己的喜好来写,就算写成aaaaa也行。不过,为了函数名拥有语义化,方便人阅读理解,我们一般使用英文来作为函数名。

//  这一段代码被称之为add函数的函数定义
int add(int a, int b)
{
    return a+b;
}

好的,那我们写完了一个add函数了。这一段代码被称之为add函数的函数定义。

主函数是C语言程序的入口

上面我们已经自己定义好了一个add函数,那我们需要怎样来使用它呢?add函数能直接运行嘛?, 答案是不行的。

所有的C语言代码都有一个起始入口,而这个入口就是主函数main。进入了主函数以后,才能经由主函数来调用其他函数。

这也意味着,每个C语言代码,只能有且只有一个main函数。我们把代码稍微修改,现在代码如下。

#include <stdio.h>
int add(int a, int b)  
{
    return a + b;
}

int main()
{
    int result;
    result = add(2, 3);
    printf("%d", result);
    return 0;
}

当程序运行时,首先会进入主函数main。接着调用我们刚刚编写的add函数了。我们传了2个值分别是整数2和3的add函数。 函数的定义中规定,传2个参数,我们调用的时候,也必须传2个,并且类型也需要一致,否则编译会报错。

那么自然地,我们会想到,主函数是被谁调用的?主函数的返回值必须是int吗?主函数在程序开始的时候被自动调用,不需要在程序内主动调用主函数。而主函数的返回值会返回给调用这个程序的程序。C语言标准中规定主函数有返回值且必须是int。如果程序正常结束,一般将返回值设置为0。

调用函数,必须先知道函数

我们再来看看,编译器是怎么理解add这个标识符的。编译器会从代码开始,按照从上往下的顺序阅读代码。编译器首先看到了一个函数的定义,描述了一个叫add的函数。接着,在main中需要使用add,由于编译器已经知道了add的定义,因此编译器可以正常编译通过。

但是,如果将函数定义和函数调用反过来呢?首先,编译器看到了add标识符,编译器会很疑惑,add是什么呢?编译器无法理解add究竟是什么。因此,编译器将报错,并停止编译。

我们看看在软件中的效果是怎么样的

总结: 也就是在c中所有的函数必须声明在Main函数之前才行

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复感谢,配合,希望我的努力对你有帮助^_^

免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我。

相关文章