第二 认识C语言程序
首先先看一个简单的C语言程序,通过程序来认识C语言
#include <stdio.h>
/*************************** 说明 ********************************
功能:打印一个程序,通过修改数值显示我的第n个程序并暂停控制台
函数设计说明:
num:第n个程序;类型:int
时间:2019.12.23
作者:陈
****************************************************************/
int main(void) {
int num; //定义一个名为num的变量
num = 1; //为num赋一个值
printf("Hello Word \n"); //使用printf()函数
printf("我的第 %d ", num);
printf("个程序!\n");
system("pause");
return 0;
}
上面的程序功能就是显示屏输出一段文字,(如果不知道怎么运行程序,参考这里)。如果一切运行正常,该程序的输出应该是:
Hello Word
我的第 1 个程序!
下图组成C程序的几个部分,图中包含的元素比上诉程序多
1、简述程序中的每行代码的作用,具体功能后续详解
#include<stdio.h> ←包含另一个文件
该行告诉编译器把stdio.h中的内容包含在当前程序中。stdio.h是C编译器软件包的标准部分,它提供键盘输入和屏幕输出的支持。
int main(void) ←函数名
C程序包含一个或多个函数,它们是C程序的基本模块。程序清单2.1的程序中有一个名为main()的函数。圆括号表明main()是一个函数名。int表明main()函数返回一个整数,void表明main()不带任何参数。这些内容我们稍后详述。现在,只需记住int和void是标准ANSI C定义main()的一部分(如果使用ANSI C之前的编译器,请省略void;考虑到兼容的问题,请尽量使用较新的C编译器)。
/* 说明 */ ←注释
//定义一个名为num的变量
注释在/*和*/两个符号之间或者//后面,这些注释能提高程序的可读性。注意,注释只是为了帮助读者理解程序,编译器会忽略它们。
{ ←函数体开始
左花括号表示函数定义开始,右花括号(})表示函数定义结束。
int num; ←声明
该声明表明,将使用一个名为num的变量,而且num是int(整数)类型。
num = 1; ←赋值表达式语句
语句num = 1;把值1赋给名为num的变量。
printf("Hello Word \n "); ←调用一个函数
该语句使用 printf()函数,在屏幕上显示Hello Word ,光标停在下一行。printf()是标准的C库函数。在程序中使用函数叫作调用函数。代码\n告诉计算机另起一行,即把光标移至下一行。
printf("我的第 %d .\n", num); ←调用另一个函数
接下来调用的这个printf()函数在上条语句打印出来的内容后面加上“我的第num”,printf()把num的值(1)内嵌在用双引号括起来的内容中一并打印。%d告诉计算机以何种形式输出num的值,打印在何处printf("个程序!\n");
最后调用的printf()“个程序”打印完。
system("pause"); ←暂停控制台
return 0; ←return语句
C函数可以给调用方提供(或返回)一个数。目前,可暂时把该行看作是结束main()函数的要求。
} ←结束
必须以右花括号表示程序结束。
2、程序详解
1.#include<stdio.h>
这是程序的第1行。#include <stdio.h>的作用相当于把stdio.h文件中的所有内容都输入该行所在的位置。实际上,这是一种“拷贝-粘贴”的操作。include 文件提供了一种方便的途径共享许多程序共有的信息。#include这行代码是一条C预处理器指令(preprocessor directive)。通常,C编译器在编译前会对源代码做一些准备工作,即预处理(preprocessing)。
所有的C编译器软件包都提供stdio.h文件。该文件中包含了供编译器使用的输入和输出函数(如, printf())信息。该文件名的含义是标准输入/输出头文件。通常,在C程序顶部的信息集合被称为头文件(header)。在大多数情况下,头文件包含了编译器创建最终可执行程序要用到的信息。例如,头文件中可以定义一些常量,或者指明函数名以及如何使用它们。但是,函数的实际代码在一个预编译代码的库文件中。简而言之,头文件帮助编译器把你的程序正确地组合在一起。ANSI/ISO C规定了C编译器必须提供哪些头文件。有些程序要包含stdio.h,而有些不用。特定C实现的文档中应该包含对C库函数的说明。这些说明确定了使用哪些函数需要包含哪些头文件。例如,要使用printf()函数,必须包含stdio.h头文件。省略必要的头文件可能不会影响某一特定程序,但是最好不要这样做。本书每次用到库函数,都会用#include指令包含ANSI/ISO标准指定的头文件。
2.main()函数
int main(void);
上诉中的第2行表明该函数名为main。的确,main是一个极其普通的名称,但是这是唯一的选择。C程序一定从main()函数开始执行(目前不必考虑例外的情况)。除了main()函数,你可以任意命名其他函数,而且main()函数必须是开始的函数。圆括号有什么功能?用于识别main()是一个函数。很快你将学到更多的函数。就目前而言,只需记住函数是C程序的基本模块。
如果浏览旧式的C代码,会发现程序以如下形式开始:
main()
C90标准勉强接受这种形式,但是C99和C11标准不允许这样写。因此,
即使你使用的编译器允许,也不要这样写。
你还会看到下面这种形式:
void main()
一些编译器允许这样写,但是所有的标准都未认可这种写法。因此,编译器不必接受这种形式,而且许多编译器都不能这样写。需要强调的是,只要坚持使用标准形式,把程序从一个编译器移至另一个编译器时就不会出什么问题。
3.注释
多行注释
/**** 说明 *****/
在程序中,被/* */两个符号括起来的部分是程序的注释。写注释能让他人(包括自己)更容易明白你所写的程序。C 语言注释的好处之一是,可将注释放在任意的地方,甚至是与要解释的内容在同一行。较长的注释可单独放一行或多行。在/*和*/之间的内容都会被编译器忽略。下面列出了一些有效和无效的注释形式:
/* 这是一条C注释。 */
/* 这也是一条注释,
被分成两行。*/
/*
也可以这样写注释。
*/
/* 这条注释无效,因为缺少了结束标记。
单行注释
// 这种注释只能写成一行
4.花括号、函数体和块
{
...
}
上诉程序中,花括号把main()函数括起来。一般而言,所有的C函数都使用花括号标记函数体的开始和结束。这是规定,不能省略。只有花括号({})能起这种作用,圆括号(())和方括号([])都不行。花括号还可用于把函数中的多条语句合并为一个单元或块。
5.声明
int num;
上诉程序中,这行代码叫作声明(declaration)。声明是C语言最重要的特性之一。在该例中,声明完成了两件事。其一,在函数中有一个名为num的变量(variable)。其二,int表明num是一个整数(即,没有小数点或小数部分的数)。int是一种数据类型。编译器使用这些信息为num变量在内存中分配存储空间。分号在C语言中是大部分语句和声明的一部分。
6.赋值
num = 1;
程序清单中的这行代码是赋值表达式语句[2]。赋值是C语言的基本操作之一。该行代码的意思是“把值1赋给变量num”。在执行int num;声明时,编译器在计算机内存中为变量num预留了空间,然后在执行这行赋值表达式语句时,把值储存在之前预留的位置。可以给num赋不同的值,这就是num之所以被称为变量(variable)的原因。注意,该赋值表达式语句从右侧把值赋到左侧。
7.printf()函数
printf("Hello Word \n");
printf("我的第 %d ", num);
printf("个程序!\n");
这3行都使用了C语言的一个标准函数:printf()。功能是把括号内的字符串输出到显示设备
8.return语句
return 0;
return语句[3]是上诉程序的最后一条语句。int main(void)中的int表明main()函数应返回一个整数。C标准要求main()这样做。有返回值的C函数要有return语句。
具体介绍就到这便,有问题可以留言!我看到回复
上一篇: Android 架构设计:MVC、MVP、MVVM详解
下一篇: 跨国机器人巨头也正加紧布局中国市场