2.2 示例解释

本文详细解析了C语言的基本结构,包括#include指令、main函数、注释、变量声明、赋值、printf函数及return语句。通过一个简单的程序实例,介绍了每个部分的作用,帮助初学者理解C语言的编程基础。
摘要由CSDN通过智能技术生成

2.2.1 快速概要

本章节简述程序的每行代码的作用。

#include <stdio.h> <- 包含另一个文件

该行代码告诉编译器把stdio.h中的内容包含在当前程序中。stdio.h是C编译器软件包的标准部分,它提供键盘输入和屏幕输出的支持。

int main(void) <-函数名

C程序包含一个或多个函数,它们是C的基本模块。程序清单2.1的程序中有一个名为main()的函数,圆括号表明main()是一个函数名。

int表明main()函数返回一个整数,void表明mian()不带任何参数。

/* 一个简单的C程序 */ <-注释

注释在/* 和 */两个符号之间,这些注释能提高程序的可读性。注意,注释只是为了帮助读者理解程序,编译器会忽略他们。

{ <- 函数体的开始

左花括号表示函数定义的开始,右花括号( } )表示函数定义结束。

int num; <- 声明

该声明表示,将使用一个名为num的变量,而且num是int(整数)类型。

num = 1; <- 赋值表达式语句

语句num = 1;把值1赋给名为num的变量。

printf("I am a simple "); <- 调用一个函数

该语句使用printf()函数,在屏幕上显示 I am a simple,光标停在同一行。printf()是标准的C库函数。在程序中使用也叫做调用函数。

printf("computer.\n") <- 调用另外一个函数

接下来调用的这个printf()函数在上条语句打印出来的内容后面加上“computer”。代码\n告诉计算机另起一行,即把光标移至下一行。

printf("My favorite number is %d because it is first.\n", num);

最后调用的printf()把num的值(1)内嵌在用双引号括起来的内容中一并打印。%d高告诉计算机以何种形式输出num的值,打印在何处。

return 0; <- return语句

C函数可以给调用方提供(或返回)一个数。

} <- 结束

必须以右花括号表示程序结束。


2.2.1 程序细节

        本节将逐行分析程序中的代码,以每行代码为出发点,深入分析代码背后的细节,为更全面地学习C语言编程的特性夯实基础。


1、#include 指令和文件

#include <stdio.h>

        这是程序的第一行。#include <stdio.h>的作用相当于把stdio.h文件中所有内容都输入该行所在的位置。实际上,这是一种“拷贝-粘贴”的操作。#include文件提供了一种方便的途径共享许多程序共有的信息。

        #include这行代码是一条C预处理指令。通常,C编译器在编译前会对源码做一些准备工作,即预处理。

        所有的C编译器软件包都提供stdio.h文件。该文件中包含了供编译器使用的输入和输出函数(如printf())信息。该文件名的含义是标准输入/标准输出头文件。通常,在C程序顶部的信息集合被称为头文件。


2、main函数

int main(void);

        该函数名为main。的确,mian是一个极其普通的名称,但是这是唯一的选择。C程序一定从main()函数开始执行。除了main函数,你可以任意命名其他函数,而且main()函数必须是开始的函数。

        圆括号的作用:用于识别main()是一个函数。        ·        

        int是main()函数的返回类型。这表明main()函数返回的值是整数。返回到哪里?返回给操作系统。

        通常,函数名后面的圆括号中包含一些传入函数的信息。该例中没有传递任何信息。因此,圆括号内是单词void。


3、注释

/* 一个简单的程序 */

        在程序中,被/**/两个符号括起来的部分是程序的注释。写注释能让他人(包括自己)更容易明白你所写的程序。

C语言注释的好处:

  • 可将注释放在任意的地方,甚至是与要解释的内容在同一行。

  • 较长的注释可单独放一行或多行。

  • 在/* 和 */之间的内容都会被编译器忽略。

常见例子:

/* 这是一条C注释 */

/* 这也是一条注释,

被分成两行 */

/*

也可以这样写注释。

*/

/* 这条注释无效,因为缺少了结束标记。

C99新增了另一种风格的注释,这种新风格使用 // 符号创建注释,仅限于单行

// 这种注释只能写成一行

int rigue; // 这种注释也可置于此

因为一行末尾就标志着注释的结束,所以这种风格的注释只需在开始处标明 //符号即可。

为何需要 // 注释?

这种新形式的注释是为了解决旧形式注释存在的潜在问题。假设有以下代码:

/*

希望能运行。

*/

x = 100;

y = 200;

/* 其他内容已省略 */

接下来,假设你决定删除第4行,但不小心删除第3行(*/)。代码如下所示。

/*

希望能运行。

y = 200;

/* 其他内容已省略 */

        现在编译器把第1行的/* 和第4行的*/配对,导致第4行代码全部变成注释。而 // 形式的注释只对单行有效,不会导致这种“消失代码”的问题


4、花括号、函数体和块

{

......

}

        花括号把main()函数括起来。所有的C函数都使用花括号标记函数体的开始和结束。这是规定,不能省略。只有花括号能起这种作用,圆括号和方括号都不行。


5、声明

int num;

        这行代码叫做声明。声明是C语言最重要的特性之一。在该例中,声明完成了两件事。1、在函数中有一个名为num的变量。2、int表明num是一个整数。int是一种数据类型。编译器使用这些信息为num变量在内存中分配存储空间。

        在C语言中,所有变量都必须先声明才能使用。这意味着必须列出程序中用到的所有变量名及其类型。

        以前的C语言,还要求把变量声明在块的顶部,其他语句不能在任何声明的前面。也就是说,main()函数体如下所示:

int main() // 旧规则

{

    int doors;

    int dogs;

    doors = 5;

    dogs = 3;



    // 其他语句

}

        C99和C11遵循C++的惯例,可以把声明放在块中的任何位置。尽管如此,首次使用变量之前一定要先声明它。上述例子可以改写为:

int main()

{

    int doors;

    doors = 5; // 第一次使用doors

    // 其他语句



    int dogs;

    dogs = 3; // 第一次使用dogs

    // 其他语句

}

数据类型

        C语言可以处理多种类型的数据,如整数、字符和浮点数。把变量声明为整数或字符类型,计算机才能正确地存储、读取和解释数据。

命名

        给变量命名时要使用有意义的变量名或标识符,如果变量名无法清楚地表达自身的用途,可在注释中进一步说明。

命名规则:

  • 小写字母、大写字母、数字、下划线来命名

  • 第一个字符必须是字符或者下划线,不能是数字

  • 最长不要超过63个字符,编译器可能会省略掉过长的字符

示例:

有效的名称无效的名称
wiggles$Z]**
cat22cat
Hot_TubHot-Tub
taxRatetax Rate
_kcabdon't

        操作系统和C库经常使用一个或两个下划线字符开始的标识符(如,_kcab),因此最好避免在自己的程序中使用这些名称。

        C语言区分大小写,即把一个字母的大写和小写视为2个不同的字符:

        startsStartsSTARTS不是同一个变量。


6、赋值

num = 1;

        这行代码是赋值表达式语句。赋值是C语言的基本操作之一。该行代码的意思是“把值1赋给变量num”,在执行int num;声明时,编译器在计算机内存中位变量num预留了空间,然后在执行这行赋值表达式语句时,把值存储在之前预留的位置。可以给num赋不同的值,这就是num之所以被称为变量的原因。


7、printf()函数

printf("I am a sample ");
printf("computer.\n");
printf("My favorite number is %d because it is first.\n", num);

8、return 语句

return 0;

        return居于是函数的最后一条语句。int main(void)中的int表明main()函数应返回一个整数。有返回值的C函数要有return语句。该语句以return关键字开始,后面是待返回的值,并以分号结尾。

        如果遗漏main()函数中的return语句,程序在运行至最外面的花括号时会返回0。,因此,可以省略main()函数末尾的return语句。但是不要在其他右返回值的函数中遗漏它。因此,强烈建议在main()函数中保留return语句的好习惯。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值