分解Hello World-最简单C程序组成.ppt
《分解Hello World-最简单C程序组成.ppt》由会员分享,可在线阅读,更多相关《分解Hello World-最简单C程序组成.ppt(22页珍藏版)》请在三一办公上搜索。
1、第3章 分解Hello World最简单C程序组成,在第2章读者随着笔者照葫芦画瓢,创建了第一个可运行的程序。相信读者对着源代码一头雾水不知所以,所以本章解释第2章的Hello World源代码,先回顾第2章的源代码,如所示。,3.1 C程序概貌,很短,简单几行文字,就创建了一个可以运行的程序,非常神奇。代码虽小,但五脏俱全,综观整个代码,可以总结如下特点:(1)由单词,符号,空白组成。单词以英语单词为主,有的单词就是纯正的英语单词,如main、void、include;有的不是,如getchar、pringf。单词一般都小写。代码中的标点符号并不是随意输入的。每个符号在C中都有自己的含义。中
2、出现的符号,有“#”、“”、“()”、“”、“/*”、“*/”、“”、“;”、“”。单词与单词之间用空白分隔,空白可以是空格,也可以是Tab制表符。空白的个数没有限制。(2)如同阅读小说一样,C源代码也是从上往下阅读。也就是C源代码的先后顺序是有讲究的。行与行之间也可以有空白行。空白行数也是没有限制的。有的行顶格书写,有的行却又后退了几个空格,这种后退,称为“缩进”。如何缩进,这些也都是有讲究的。(3)并没有专门的标志表示文件从哪里起始,也没有标志表示文件到哪里结束。从第一个字符开始,文件就开始了,到最后一个字符结束,文件就结束了。,3.2 为何有必要在代码里留下程序员的解释注释,出现最多的是
3、“/*”和“*/”包裹起来的中文语句,这些是注释。注释是帮助程序员阅读源代码和理解源代码的。编译器在编译源代码的时候,在目标代码生成以前,会把注释剔除掉然后再进行编译,当然编译器是不会修改源文件的,这一切是在内存中完成。由于对于注释部分忽略不处理,就如同没有这些字符一样,所以注释不会增加编译后的程序的可执行代码长度,对程序运行不起任何作用。,3.3 从哪里开始,到哪里结束main函数,先看下面的代码段,这段代码是从中截取过来的,为了学习方便,去掉了注释部分:void main(void)printf(nHello World!);getchar();void main(void)这一段是在定义
4、C程序的主函数。函数是可以完成一定功能的子程序。Main函数是C语言程序的起始执行点。每一个C程序必须有且仅有一个main函数,它是由程序员提供的。,3.4 如何在屏幕上显示文字函数调用,Main函数体中:printf(nHello World!);这行是调用了C语言提供的打印数输出函数,该函数的名字是“printf”,小括号内双引号括起来的文字是printf函数的参数。该函数的功能是把小括号里的文字原样打印在屏幕上。也就是说双引号里的内容变化,则打印在屏幕上的文字也会变化。请读者自己试验修改双引号里的文字。说明:“n”在这里有特殊的含义,读者可以发现“n”并没有在屏幕中打印出来。“n”中的“
5、”是转义字符,表示其后面紧跟的字符有专门的意思。“n”表示将光标移到第二行第一格。也就是回车换行的意思。,3.5 编译器如何认识printf函数#include预处理器指示符,源代码最终是需要被编译器处理的。编译器编译的过程比较复杂,但一般需要经历好几步。第一步是预处理。所谓预处理,就是编译前,先进行些预先处理,如代替源代码中需要代替的部分。#include就是这么一个预处理指示指令。为了弄清楚#include的作用,现在请读者思考一个问题:编译器如何知道有printf这个函数?,3.5.1 函数声明及其作用,上节中留给读者的试验,修改printf为其他单词,如print_format,则在编
6、译的时候,编译器会返回错误:Warning h cbook src22 2-helloworl.c:5 missing prototype for print_formatError:cbook src22.2helloworldc 5 undefined reference to _print_format编译和连接 耗时:3.3秒 返回代码:1“Warning h cbook src22 2-helloworl.c:5 missing prototype for print_format”这句话表明,丢失了print_format的函数原型。仅仅是一个警告。“Error:cbook src
7、22.2helloworldc 5 undefined reference to _print_format”这句话表明,出现一个错误,调用了一个没有定义的函数 print_format。,3.5.2 试验寻找#include的作用,中,函数printf的声明在哪里呢?请读者再做一个试验:将中的第一行代码删除掉。就是去掉了“#include”,再编译看出现什么现象。整个文件代码如下:void main(void)/*主函数,入口点*/*函数开始*/printf(nHello World!);/*打印字符串*/getchar();/*等待用户敲入回车*/是不是编译器又提示缺少函数原型:Warni
8、ng h:cbooksrc22.2-helloworld.c:3 missing prototype for printfWarning h:cbooksrc22.2-helloworld.c:4 missing prototype for getchar编译和连接 耗时:0.3秒 返回代码:03.5.3#include的作用现在让笔者来解释#include这行代码的作用。#include是C语言预处理器指示符。#和include之间可以有多个空格。#也不一定要顶格,但是一定是第一个非空白字符。#include的作用,是告诉编译器在编译前,要做些预先处理:将后面中的文件内容包含到当前文件内。所
9、谓包含,是指将中列出的文件的内容复制到当前文件里。注意:#一定要是第一个非空白字符。否则编译器会提示错误,并且错误信息和出错原因完全不匹配。因为getchar和printf两个函数的声明位于stdio.h文件中,所以简单的用#include把stdio.h文件包含进来,自然就把getchar和printf两个函数的声明包含进来了。说明:函数声明只是向编译器登记有这么一个函数,声明了函数不调用这个函数,是被容许的。这就是为什么包含了整个stdio.h文件,里面声明了很多其他函数,但实际没有使用这些函数而编译器又不提示的原因。,3.6 计算有些小作为的程序,打印Hello World的程序非常简单
10、,则实现了小功能,计算1+1的值:代码 计算1+1并打印结果Calc#include void main(void)int a,b;/*声明a,b为整型变量*/int y;/*声明y 为整型变量*/a=1;/*给变量a赋值为1,此时a的值为1*/b=1;/*给变量b赋值为1,此时b的值为1*/y=a+b;/*将a、b的值分别取出来,计算结果后,赋值给变量y*/printf(na+b=%d,y);/*把y的值打印出来*/getchar();编译后运行,程序结果如下:a+b=2,3.7 数据从哪里来,又到哪里去变量,在计算机程序设计中,经常要用到变量。比如在屏幕中移动光标,需要存储光标的x,y坐标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分解Hello World-最简单C程序组成 分解 Hello World 简单 程序 组成
链接地址:https://www.31ppt.com/p-6244406.html