C 语言基础教程(一)颜色加亮

首先请看下面这个简单的 C 程序,猜猜它会做些什么。猜不出来也没关系,后面会有详细的解说。
         #include <stdio.h>

int main( void )            /* 一个简单的程序 */
         {
             int num;                  /* 定义一个名叫 num 的变量 */
             num = 1;                  /* 将 1 赋值给 num         */

printf( "This is a simple C program.\n" ); /* 调用 printf 函数 */
             printf( "My favorite number is %d because it is first.\n", num );

return 0;
         }

在对这个程序进行详细说明之前,我想先请您用编译器把它编译成可执行文件,并且运行,看看运行结果和您的猜想是否一致。如果不懂如何进行编译,请参考这三篇文章:
      编译器使用方法
    编译器Dev-C++安装&使用教程
    Dev-C++ 下载

下面,我将分两步对这个程序进行详细的讲解。第一步是概要说明,也就是对程序中每一行代码的含义作简单讲解,以帮助您对这个程序有一个大致的理解。第二步是详细说明,也就是程序中的每一行代码进行详细的讲解,以加深您的理解。

一、概要说明
                 #include <stdio.h>    <-   把另外一个文件包含进来
            这行代码命令编译器把头文件.h 文件)stdio.h 中的内容包含到我们的
       程序中。stdio.h是C语言的标准头文件之一,提供对键盘输入和显示输出等的
       支持。要使用 printf 函数,就应该包含这个头文件。顺带一提,stdio 代表
       standard input/output,也就是标准输入输出的意思。

int main(void)    <-   函数头
             C 程序由一个或多个函数组成。我们的这个程序只有一个函数:main 函数。
       圆括号 () 表明 main 是一个函数;int 表明 main 函数返回一个整数;void 表明
       main 函数不接受任何参数。在此,请您紧记,int main(void) 是 ISO/ANSI C
     
 标准中定义的 main 函数定义方法之一。

/* a simple program */    <-   注释
             /* 和 */ 用于对程序进行注释说明,帮助读者更快更好地理解程序。编译器
       会忽略 /* 和 */ 之间的内容(包括 /* 和 */),不会对它们进行编译。

{        <-   函数体的开端
             这个开大括弧 { 标志着函数体开始。函数体以闭大括弧 } 结束。在 { 和 }
       之间的语句都属于这个函数。

int num;     <-   声明并且定义变量 num
             这个语句表明我们声明并且定义了一个名叫 num 的变量。int 表明这个变量为
       整型变量

num = 1;     <-   赋值语句
             这个语句将 1 赋值给变量 num 。执行这个语句后,num 的值等于 1 。

printf( "This is a simple C program.\n" );    <-   函数调用语句
             printf 函数是 C 语言标准函数库里的函数。这个语句调用 printf 函数在
        屏幕上显示“This is a simple C program.”,并且换行。\n换行符,它提示
        printf 开始新的一行,也就是将光标移动到下一行的开端。如果上面的语句中没有
        \n ,那就不会换行,而且光标会紧跟在“This is a simple program.”后面。

printf( "My favorite number is %d because it is first.\n", num );
             %d 告诉 printf 用num的值替换掉 %d ,并且以整数形式显示num的值。
        因为 num 的值为 1 ,所以这个语句在屏幕上显示“My favorite number is 1
       because it is first.
”,并且换行。

return 0;    <-   返回语句
             C 程序应该返回一个数值给调用它的媒介。返回 0 代表程序无误退出,
        返回 1 代表程序运行时出错退出。

}     <-   函数体结束
           函数体以闭大括弧 } 结束。

    二、详细说明
         现在,让我们进一步来了解每一行代码的含义。下面的内容很基础,也很重要
     必须认真弄懂,牢牢掌握

1. #include 预处理指令头文件
              在编译器对我们写的源程序进行编译之前,预处理器会对我们的写的源代码
       
进行必要的处理,称为预处理。#include 就是一个预处理指令,它命令预处理器
        进行的预处理是:把特定的头文件包含到我们的源代码里
            #include <stdio.h>的作用是将头文件 stdio.h 里的内容包含进我们的程序,
        产生的结果是将 stdio.h 里的内容一字不漏地插入 #include <stdio.h>出现的
        地方,并且删除 #include <stdio.h>。换句话说,就是用 stdio.h 里的内容替换
        #include <stdio.h>。这个过程是在预处理阶段完成的。C 语言的这种包含文件的
        机制为多个程序共享相同信息提供了极大的方便。
            stdio.h 是 C 语言标准中定义了的头文件,它包含着输入输出函数的信息。
        所有 C 编译器都应该有这个头文件,这是 ANSI/ISO C 标准中规定的。当然,
        ANSI/ISO C 规定的编译器必须提供的头文件可不止这么一个。标准还规定了许多
        别的头文件,那些我们会在以后慢慢学到。
            有些程序需要包含 stdio.h ,而有些不需要。如果我们的程序没有使用 printf
        函数,那就不需要包含 stdio.h 。
            头文件中包含着编译器进行编译时所需的信息。头文件中可能指明了函数名和
        函数调用方法,但是这些函数的实现代码并不在头文件中,而是在预先编译好了的
        库文件里。
            链接器负责在库文件中寻找我们的程序所需的代码,并且把那些代码和我们写的
        程序进行链接,从而将我的写的程序链接成可执行文件。一句话,头文件用于指导
        编译器正确地将我们写的源程序编译成可执行文件。

2. main 函数
               在 C 语言中,main 函数是主函数。每个 C 程序都必须有且只能有一个
       
main 函数(主函数)!C 程序从 main 函数开始执行,并且在 main 函数中结束。
            int是 main 函数的返回值类型,它表明 main 函数应该返回一个整数给程序的
        激活者(如操作系统)。
            如果您想了解更多关于 main 函数的东西,请点击下面的链接:
              C/C++ 误区一:void main

3. 注释
                    /* a simple program */
              /* */ 之间的内容都是注释。对程序进行适当的注释可以帮助读者(包括您自己)
          更快更好地理解您写的代码。注释可以在源程序中的任何地方书写。/* 和 */ 之间的
          任何内容(包括 /* 和 */)都会被编译器忽略掉。注意:/ 和 * 必须紧挨在一起,
          它们之间不能有空格。
                     /* 我是注释 */
                     /*我是
                       跨行注释*/
                     /*
                       我也是注释
                     */
              以上的注释都是合法的;但下面的注释是非法的,因为没写注释结束标记 */。
                     /* 非法,没有注释结束标记
              下面这个注释可能会出乎你的意料:
                     /* 我是注释开始标记
                     /* 哦哦,我不是注释开始标记
                        我是注释结束标记,我和第一个 /* 匹配,而不是和第二个 /* 匹配。*/
              上面这个注释中,注释结束标记 */ 和第一个 /* 匹配,它们之间的内容
          都被视为注释。

C99 中增加了另外一种注释方式,这种注释方式使用 // 作为注释符,和 //
          处于同一行,并且在 // 右边的内容都被当作注释。/ 和 / 之间不能有空格。
                     // 我是注释
                     int rigue;      //注释放在这里也是合法的
              上面的注释在 C99 中是合法的,但是在 C89 中是非法的。也就是说,老旧的
          编译器可能不支持 // 注释符。VC6 支持 //,TC2 不支持。

4. 大括号与函数体
               C 语言中,所有函数都以大括弧({ })作为界定符。函数体从开大括弧 {
        开始,以闭大括弧 } 结束。在后续教程中,我会对函数进行更详细的讲解。

5. int num;
               这个语句声明并且定义变量 num 。这一行末尾的分号(;)表明这一行
        是一个语句。; 是语句的一部分,单独一个 ; 也是一个合法的 C 语句。
             int 是 C 语言中的一个关键字,它代表 C 语言里的一种基本数据类型:整型。
        关键字是语言的保留字,不能用作其它用途。例如:我们不能关键字来做变量名或者
        函数名。
             标识符是指我们为变量或函数等取的名字。在这个语句中,num 就是标识符。
             C 语言中,所有变量在使用前都必须声明。C89 中,变量的声明必须位于
        函数体或者程序块的开端。例如:
                  int main( void ) /* C89 */
                  { /* 函数体开始 */
                      int doors;
                      int dogs;
                      doors = 5;
                      dogs = 3;
                      { /* 程序块开始 */
                           int dig;
                           int dug;
                           dig = 6;
                           dug = 8;
                      } /* 程序块结束 */

return 0;
                  } /* 函数体结束 */
             而在 C99 中,声明可以位于函数体或者程序块的任何地方。但是,变量仍然
        需要在声明之后才可使用。例如:
                  int main( void ) /* C99 */
                  { /* 函数体开始 */
                      int doors;
                      doors = 5;
                      { /* 程序块开始 */
                          int dig;
                          dig = 6;
                          int dug;
                          dug = 8;
                      } /* 程序块结束 */
                      int dogs;
                      dogs = 3;

return 0;
                  } /* 函数体结束 */
             上面的程序在 C99 中是合法的,但是在 C89 中却是非法的。当前支持C99 的
        编译器不多,所以上面的代码您的编译器很有可能编译不了。故而,为了使我们的
        代码具有良好的可移植性,我们应该尽可能少用,甚至不用 C99 中的新特性。

6. 赋值
                  num = 1;
             赋值是 C 语言中的一种基本操作。上面的语句是一个赋值语句,它的含义
        是:将 1 赋值给变量 num 。赋值操作完成后,num 的值等于 1 。

7. printf 函数
             printf( "This is a simple C program.\n" );
             printf( "My favorite number is %d because it is first.\n", num );
            这两行代码都调用了 printf 函数。printf 是一个标准 C 函数,也就是说,
        它是 C 语言标准函数库里定义了的函数。圆括号 () 表明 printf 是一个函数,
        圆括号里的内容会被传递给 printf 函数。例如,上面第一行代码把“This is a
        simple C program.\n”(不包括双引号)传递给 printf 函数,然后由 printf
        函数把这些信息显示于显示器。\n换行符,它提示 printf 开始新的一行。
        正因为 \n 是换行符,所以 \n 不会显示出来,而是进行了换行。如果上面的语句中
        没有 \n ,那就不会换行。
            上面代码第二行中的 %d 告诉 printf 用 num 的值替换掉 %d ,并且以
        整数形式显示 num 的值。
             %d 被称为占位符,它告诉 printf 应该在什么地方显示 num 的值。% 用于
        提醒 printf 在此处显示一个变量的值(本例中是 num 的值);d 告诉 printf 以
        十进制整数的形式显示 num 的值。

8. return(返回)语句
                   return 0;
             这个 return 语句是我们程序中的最后一个语句。int main( void ) 中的 int
        表示 main 函数应该返回一个整数,所以我们要使用 return 语句来返回一个整数。
             如果您想了解更多关于返回值的东西,请点击下面链接,查看文章的第四点
                   C/C++ 误区一:void main

上面所说的某些内容您暂时可能还不太理解,但是不用害怕,牢牢地把它们记住,然后继续往下学吧!随着学习的深入,就会逐渐搞明白。现阶段只要有这个概念就足够了。

(0)

相关推荐

  • C 语言基础教程(我的C之旅开始了)[八]

    19. 基本数据类型:复数类型和虚数类型 C99 新增了复数类型(_Complex)和虚数类型(_Imaginary).简单来说,C99 提供了三种复数类型:float _Complex,double _Complex,和 long double _Complex.对于 float _Complex 类型的变量来说,它包含两个 float 类型的值,一个用于表示复数的实部(real part),另一个用于表示虚部(imaginary part).类似地,double _Complex 包含两个

  • C 语言基础教程(一)颜色加亮

    首先请看下面这个简单的 C 程序,猜猜它会做些什么.猜不出来也没关系,后面会有详细的解说.         #include <stdio.h> int main( void )            /* 一个简单的程序 */         {             int num;                  /* 定义一个名叫 num 的变量 */             num = 1;                  /* 将 1 赋值给 num         */ p

  • C 语言基础教程(我的C之旅开始了)[十]

    27. 表达式(Expression) 表达式由运算符和操作数组成.单独一个操作数是最简单的表达式.请看以下例子: 9                    -4                    +5                 3 + 6       a * ( b/c - d )             e = 9 / 3           f = ++e % 3 表达式中的表达式称为子表达式.例如:b/c 是 a * ( b/c - d ) 的子表达式. 每个表达式都有一个值,

  • 易语言基础教程之简单的人机交互

    易语言由于完全支持面向对象编程理念,因此也秉性了功能与外观相分离的良好编程思路.了解并掌握易语言中的人机交互操作,对于理解易语言编程思维及至掌握易语言编程核心,都具有极为重要的意义.下面就来学习一下易语言中实现人机交互的具体方法. 方法/步骤 首先创建一个"Windows窗口程序",利用"窗口组件箱",给"可视化窗口"绘制一个"编程框"和一个"按钮"组件. 查看编辑框的名称:选中编辑框,就可以在"

  • 易语言基础教程之菜单栏和工具栏

    目前的易语言版本是10个菜单栏,每个菜单栏有不同的功效,而工具栏就是从菜单栏里找出来的一个方便按钮,下面我就给大家详细解释一下每个菜单栏 菜单栏详解 "程序"菜单 相当于其他应用程序的"文件"菜单,这个菜单主要负责文件操作,例如"新建"."打开"."保存"."另存为"等等,还包括"程序配置"."易模块管理"等.值得初学者注意的是,在易语言的&quo

  • C 语言基础教程(我的C之旅开始了)[六]

    14. 基本数据类型:字符型(上) 1.字符型(char)简介 字符型(char)用于储存字符(character),如英文字母或标点.严格来说,char 其实也是整数类型(integer type),因为 char 类型储存的实际上是整数,而不是字符.计算机使用特定的整数编码来表示特定的字符.美国普遍使用的编码是 ASCII(American    Standard    Code   for    Information   Interchange  美国信息交换标准编码).例如:ASCII

  • C 语言基础教程(我的C之旅开始了)[五]

    12. 基本数据类型:整型(下) 1. 输出各种整数类型的变量 输出不同类型的整数,需要使用不用的格式限定符.输出 unsigned int 类型的整数,要用 %u .输出 long ,要用 %ld:如果要以十六进制或者八进制形式输出,那就用 %lx(或者%lX)或者 %lo.注意:虽然整数常量的后缀使用大写或者小写英文字母都没关系,但是它们格式限定符必须使用小写!如果我们要输出 short 类型的整数,可以在 %d 中间加上前缀 h,也就是%hd:同理,%ho 和 %hx(或者 %hX )分别

  • C 语言基础教程(我的C之旅开始了)[四]

    10. 基本数据类型:整型(上) 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.    int 代表有符号整数,也就是说,用 int 声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数.标准规定 int 的最小取值范围是 -32767 到 32767.int 的取值范围因机器而异,但是一定要大于或者等于-32767到 32767.一般来说,int 占用一个字的内存空间.因此,字长为

  • C 语言基础教程(我的C之旅开始了)[三]

    7. 第三个 C 程序 首先请看下面这个小程序,试着自己编译运行一下.如果不懂怎么编译,请点击下面的超链接:      编译器使用方法    编译器Dev-C++下载&使用教程 /* circle.c  --  计算圆的面积 */ #include <stdio.h> int main( void )      {          float radius;    /* 圆的半径 */ printf( "Please enter the radius: " ); 

  • C 语言基础教程(我的C之旅开始了)[二]

    3. C 程序的结构 C 程序由一个以上的函数组成,而且必须有 main 函数.此外,C 程序一般还有一些预处理指令.例如 #include 指令.当然并不是必须要有 #include 指令.函数由函数头和函数体组成.函数头由返回值.函数名以及参数列表(可以是void)组成.函数体从 { 开始,以 } 结束.函数体里可以有一系列的语句,每个语句以分号(;)结束.例如: 预处理指令     --〉   #include <stdio.h> 函数头         --〉  int main( v

随机推荐