Java设计模式中的命令模式
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>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>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
上面所说的某些内容您暂时可能还不太理解,但是不用害怕,牢牢地把它们记住,然后继续往下学吧!随着学习的深入,就会逐渐搞明白。现阶段只要有这个概念就足够了。
加载中,请稍侯......
精彩评论