【C语言学习3——基本的C语言语法知识1】

C语言学习3——基本的C语言语法知识

  • 主函数
  • 什么是主函数?
  • 写一个自己的函数
  • 主函数是整个C语言程序的入口
  • 要调用函数,必须先知道函数
  • 什么是变量?

#include 
int main()
{
printf("Hello World\n");
return 0;
}

相信你已经看到了第一个示例代码的效果了。这个程序所实现的效果很简单,就是在屏幕上输出了一行
字符"Hello World"。
我们根据这一小段代码,借此了解一些C语言的基础语法知识。

主函数

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

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

main 翻译成中文是主要的、最重要的意思,而在C语言里面表示一个主函数。
双斜杠后面的为 注释 ,打一个比较形象的比喻, 注释 就类似于老师在作业本上的批注。
一般来说,注释用于标注这段代码的用途或解释思路等。因为注释不会被当作代码进行编译,所以无论
添加什么注释内容,都不会对代码的实际运行产生任何影响。
如上代码中,用注释标出了哪里为 主函数 ,哪里是函数的 返回值 。

什么是主函数?

我们先谈谈什么是 函数 ?在大家的认知里面,函数是数学领域的一个名词,它可能是如下图所示:
【C语言学习3——基本的C语言语法知识1】_第1张图片
但是,这只是数学领域中的 函数 ,与编程语言中的 函数 完全不同。
在编程语言里面,你可以把函数看做一个盒子,这个盒子有如下几个特性:
1. 开始执行时,函数可以被输入一些值
2. 执行过程中,函数可以做一些事情
3. 执行完成后,函数可以返回一些值

4. 【C语言学习3——基本的C语言语法知识1】_第2张图片
让我们看看我们的这个主函数,在这3个特性上,分别做了什么。
【C语言学习3——基本的C语言语法知识1】_第3张图片
1. 主函数什么都没有输入
5. 主函数打印了一行字到屏幕上
6. 主函数返回了0

【C语言学习3——基本的C语言语法知识1】_第4张图片
其中, int 表明了函数的 返回值类型 为整数类型, int 是 integer(整数) 的缩写。这是由语言标准规定
的,不可以写成别的单词。
main 是 函数名 , main 后面的括号 () 内为输入参数,目前为空。
return 后跟函数的 返回值 ,为0。而0是一个整数,和函数名前面的 int 对应。
我们总结一下函数的写法公式:

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

被花括号包括的被称为 函数体 ,注意函数体一定要被花括号包括且不可省略。花括号上面的函数名、函
数参数及返回值被称作 函数头 。
【C语言学习3——基本的C语言语法知识1】_第5张图片

写一个自己的函数

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

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

【C语言学习3——基本的C语言语法知识1】_第6张图片
好的,那我们写完了一个 add函数 了。这一段代码被称之为add函数的函数定义。

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

上面我们已经自己定义好了一个 add函数 ,那我们需要怎样来使用它呢? add函数 能直接运行嘛?
答案是不行的。
所有的C语言代码都有一个起始入口,而这个入口就是 主函数main 。进入了主函数以后,才能经由主函
数来调用其他函数。
这也意味着,每个C语言代码,只能有且只有一个main函数。
我们把代码稍微修改,现在代码如下。

#include 
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函数 。
函数的定义中规定了需要传a、b,2个参数,我们调用的时候,也必须传2个,并且类型也需要尽量一
致,否则编译可能会报错。(若类型不同,编译器会尝试自动类型转换。自动类型转换失败则会编译失
败。)
【C语言学习3——基本的C语言语法知识1】_第7张图片
那么自然地,我们会想到,主函数是被谁调用的?主函数的返回值必须是 int 吗?
主函数在程序开始的时候被自动调用,不需要在程序内主动调用主函数。
而主函数的返回值会返回给调用这个程序的程序。
C语言标准中规定主函数有返回值且必须是 int 。如果程序正常结束,一般将返回值设置为0。

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

我们再来看看,编译器是怎么理解 add 这个名称的。
编译器会从代码开始,按照从上往下的顺序阅读代码。
编译器首先看到了一个函数的定义,描述了一个叫 add 的函数。接着,在 main 中需要使用 add ,由于
编译器已经知道了 add 的定义,因此编译器可以正常编译通过。
【C语言学习3——基本的C语言语法知识1】_第8张图片
但是,如果将函数定义和函数调用反过来呢?
首先,编译器看到了 add 这个名称,编译器会很疑惑, add 是什么呢?编译器无法理解 add 究竟是什
么。因此,编译器将报错,并停止编译。
【C语言学习3——基本的C语言语法知识1】_第9张图片

什么是变量?

在 add函数 计算完毕之后,需要有一个东西来接受 add 返回回来的值。所以,我们在 add 前面声明了一
个 int整型 的 变量 。
什么是变量呢?你可以把它看做一个空箱子,里面可以装任何其他的和它类型一致的值。
result 只是我们给它起的一个名字,当然,你可以任意起名。比如叫he,叫xiangzi,都可以。
我们把 add 返回回来的5,装进了 result 。因此, result 里面装着的值是5了。
= 等号,在C语言中是赋值运算符,相信你已经发现它有把右边的值装进左边变量的功能了。和函数一样,这里的等号和数学里面的等号,也是有很大不同的,它并不是相等的意思。
赋值运算符:将符号右边的值,装进左边的变量的一种运算符。
下图就是 add函数 接受2,3为输入,返回5,被赋值号 = 赋值给 result 的流程了。
【C语言学习3——基本的C语言语法知识1】_第10张图片
那我们能不能这样写呢?去掉 int result; 这一条。

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

答案是不行的,变量必须先声明后使用。
编译器看到 result 这个名称,但是从未见过 result 的定义时,肯定也会疑惑它究竟是个什么类型的变
量,甚至它有可能不是变量而是一个函数。这样,编译器只能遗憾地给出一个编译错误的提示,并结束
编译了。

int result;

你必须像上面这样,声明有一个变量,名字叫 result ,类型是 int 。接下来,编辑器就能记
下 result 为一个 int 类型的变量。在后面的代码中,即可愉快地使用这个 result 变量了。

你可能感兴趣的:(C语言学习,Visual,Studio,c语言,学习,算法,microsoft)