C++学习(一)入门篇——进入C++

程序清单2.1  myfirst.cpp
//myfirst.cpp - - displays a message

#include <iostream> //预处理器编译指令#include int main() //函数头 { using namespace std; //编译指令 cout << "come up and C++ me sometime."; //{}中为函数体的内容 cout << endl; cout << "you won't regret it!" << endl; return 0;//cin.get(); }

这是一则显示消息的简单C++程序,我们通过程序来进行C++的学习

 

                                     程序创建技巧

                                                   编程流程图

 1.使用文本编辑器编写程序,所保存到的文件中就是程序的源代码。

 2.用编译器将源代码翻译为主机使用的内部语言——机器语言,翻译后程序的文件就是目标代码。

 3.将目标代码与其他代码连接起来。就是说将目标代码及将目标代码中使用的函数(比如执行屏幕显示和计算平方根任务)和一些标准的启动代码组合起来,生成程序的运行阶段版本。包含该最终产品的文件称为可执行代码。

给源文件命名时,必须使用正确的后缀,将文件标识为C++文件。它不仅表明了该文件是C++源代码。还将这种信息告知编译器,如UNIX编译器显示信息“bad magic number”,则表明后缀不正确。后缀由一个句点和一个或多个字符组成。也叫文件扩展名,文件扩展名cpp是一种表示C++程序的常用方法

下表列出了一些常用的文件扩展名

源代码文件的扩展名
C++实现            源代码文件的扩展名
UNIX C、cc、cxx、c
GNU C++ C、cc、cxx、cpp、c++
Digital Mars cpp、cxx
Borland C++ cpp
Watcom   cpp
Microsoft Visual C++ cpp、cxx、cc
Freestyle Code Warrior cp、cpp、cc、cxx、c++

接下来我们回归到程序的分析上来

注意:C++对大小写敏感(区分大写和小写字母),不然将会指出未知的标识符,程序无法通过编译。

 

程序调整

运行该程序,运行完毕后会自动关闭,可在return前添加cin.get();语句,可让窗口一直开着,直到按任意键。

运行正确的话,程序编译输出:

come up and C++ me sometime.

you won't regret it!

 

C语言输入和输出

C++中一般使用cout函数来进行输出

不过只要在C++中包含常规的C语言stdio.h文件,就能够使用printf()、scanf()和其它所有标准C输入与输出函数

 

1.函数头 int main()

函数头描述了函数与调用它的函数的接口

int表示函数返回类型,描述从函数返回给调用它的函数的信息

main()括号中部分叫做形参列表或参数列表,描述从调用函数传递给被调用函数的信息

通常,main()被启动代码调用,启动代码是由编译器添加到程序中的,是程序和操作系统中的桥梁

 main函数中的空括号意味着它不接受任何信息或者任何参数。这个函数头表示可以给调用它的函数返回一个整数值,但不从调用它的函数那里获得任何信息

在C++中,int main(void)和int main()等效

或者说void main()这在逻辑上与上面一致,函数不返回任何值。但这不是当前标准强制的选项,在有些系统中不能工作,应避免使用这种形式。

如果编译器到达main()函数末尾没有遇到返回语句,则默认为以return 0结尾,只适用于main()函数,而不是用于其他函数。

 

2.为什么main()不能使用其他名称

之所以将C++程序中函数命名为main(),因为程序中必须包含一个名为main()的函数,因为myfirst.cpp程序只有一个函数,那么该函数必须承担起main()的责任,不然程序将不完整,编译器将指出未定义main()函数。

 

3.注释

C++用//来注释,编译器会忽略注释。

注释不仅有利于他人理解这些代码,特别对一段时间没有接触程序的程序员来说也很有帮助。

但C++也可以使用C语言的注释/*    */可以跨越多行,但尽量使用C++的注释风格,使产生问题可能性最小。

 

4.C++预处理器和iostream文件

预处理编译指令#include将iostream文件的内容添加到程序中(典型的预处理器操作:在源代码被编译之前,替换或添加文本)

为什么要将iostream文件的内容添加到程序中?

io指的是输入和输出,C++中输入和输出方案涉及iostream文件中多个定义,为了用cout显示消息,myfirst.cpp需要这些定义。

#include编译指令让iostream文件的内容随源代码的内容一起发送给编译器,iostream文件内容将取代代码行#include<iostream>,原始文件没被修改,而是将源代码文件和iostream组合成复合文件,进行编译使用。

注意:cin输入和cout输出程序必须包含文件iostream

 

5.头文件名

C++编译器包含了很多头文件,每个头文件都支持一组特定的工具

头文件命名约定
头文件类型 约定 示例 说明
C++旧式风格 以.h结尾 iostream.h C++程序可以使用
C旧式风格 以.h结尾 math.h

C、C++程序可以使用

C++新式风格 没有扩展名 iostream C++程序可以使用,使用namespace std
转换后的C 加上前缀c,没有扩展名 cmath C++程序可以使用,可以使用不是C的特性,如namespace std

 

6.名称空间

using namespace std;

通过这个指令使iostream中的定义对程序可用。

using为编译指令,名称空间是一项C++特性,使在编写大型程序和多个厂商现有代码组合起来程序更容易。

比如:

两个已经封装好的产品,它们都包含一个名为wanda()的函数,那么使用这个函数时,编译器不知道使用哪个版本,名称空间可以让厂商将产品封装在它的单元里,如

Microflop公司的版本为:Microflop::wanda(“go dancing?”);   

Piscine公司版本为:Piscine::wanda(“a fish named Desire”);

按照这种情况,类、函数和变量便是C++编译器的标准组件,它们现在都被放置在名称空间std中,仅当头文件没有扩展名h时,才如此。

则意味着iostream中定义的cout和endl等实际上为std::cout和std::endl。可省略using。

但using编译指令使得std名称空间中所有名称都可用。

 

7.使用cout进行C++输出

cout<<"come up and C++ me some time.";

双括号括起的部分是要打印的消息,双引号括起的一系列字符叫做字符串,因为它是由若干字符组合而成的。<<表示该语句把这个字符发送给了cout,指出了信息流动的途径。

把右侧的信息插入到出输出流中,cout对象表示这种流。

 

8.控制符endl和换行符

打印字符串时,cout不会重起一行,靠endl来实现。

如果要在两个字符串之间留一个空格,必须将空格包含在字符串中。

\n视为换行符,在字符串中输入换行符,即可换行。

如:cout<<"What's next?\n";

显示用括号引起的字符串时,通常使用换行符\n,其他情况下使用endl。

一个差别是,endl确保程序继续运行前刷新输出(将其立即显示在屏幕上);而用“/n”不能提供这样的保证,有时可能输入信息后才会提示。

 

9.C++源代码的格式化

在有些语言中,回车的作用是将语句分开,而在C++中,分号标示了语句的结尾,回车的作用就和空格或制表符相同。

但不能把空格放在元素或字符串中间,如:

int ma  in()

cout<<"Behold the Beans

of  Beauty!";

一行代码中不可分割的元素叫做标记,如int和main()

 

10.C++源代码风格

遵循合理的风格,程序将更便于阅读

     (1)每条语句占一行

     (2)每个函数都有一个开始花括号和一个结束花括号,这两个花括号各占一行

     (3)函数中的语句都相对于花括号进行缩进

     (4)与函数名称相关的圆括号周围没有空白

前三条规则旨在确保代码清晰可读,第四条帮助区分函数和一些也使用圆括号的C++内置结构(如循环) 

 

posted @ 2017-07-16 21:32  等候鸟飞回来  阅读(758)  评论(1编辑  收藏  举报