走进C++

介绍

main()函数

  • main()函数是作为接口的函数头。

通常,C++函数可被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口。位于函数名前面的部分叫做函数返回类型,它描述的是从函数返回给调用它的函数的信息。函数名后括号中的部分叫做形参列表(argument list)或参数列表(parameter list);它描述的是从调用函数传递给被调用的函数的信息。这种通用格式用于main()时让人感到有些迷惑,因为通常并不从程序的其他部分调用main()。然而,通常,main()被启动代码调用,而启动代码是由编译器添加到程序中的,是程序和操作系统(UNIX、Windows?或其他操作系统)之间的桥梁。事实上,该函数头描述的是main()和操作系统之间的接口。

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

之所以将myfirst.cpp程序中的函数命名为main(),原因是必须这样做。通常,C++程序必须包含一个名为main()的函数(不是Main( )、MAIN()或mane()。记住,大小写和拼写都要正确)。由于myfirst.cpp程序只有一个函数,因此该函数必须担负起main()的责任。在运行C++程序时,通常从main()函数开始执行。因此,如果没有main(),程序将不完整,编译器将指出未定义main()函数。

存在一些例外情况,例如,在Windows编程中,可以编写一个动态链接库(DLL)模块,这是其他Windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main()。用于专用环境的程 ——如机器人中的控制器芯片一可能不需要main()。有些编程环境提供一个框架程序,该程序调用一些非标准函数,如_tmain( )。在这种情况下,有一个隐藏的main(),它调用_tmain( )。但常规的独立程序都需要main()。

C++注释

以//打头,到行尾结束。也可以用C的风格“注释包括在//”之间。

C++预处理器和iostream文件

使用#include编译指令

#include <iostream> // a PREPROCESSOR directive

该编译指令导致预处理器将iostream文件的内容添到程序中。这是一种典型的预处理器操作:在源代码被编译之前,替换或添加文本。

头文件名

老式C的头文件保留了拓展名h(C++程序仍可以使用这种文件),C++头文件则没有拓展名。有些C头文件被转换为C++头文件,这些文件被重新命名,去掉了扩展名h (使之成为C++风格的名),并在文件名称前面加上前缀c (表明来自C语)。

名称空间

名称空间支持是一项C++特性,旨在让您编写大型序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序。

让程序能够访问名称空间std的方法有多种,下面是其中的4种:

  • using namespace std;放在函数定义之前,让文件中所有的函数都能够使用名称空间Std中所有的元素。

  • using namespace std;放在特定的函数定义中,让该函数能够使用名称空间 std中的所有元素。

  • 在特定的函数中使用类似using std::cout; 这样的编译指令,而不是using namespace std;,让该函数能够使用指定的元素,如cout。

  • 完全不使用编译指令using,而在需要使用名称空间std中的元素时,使用前缀std::,如下所示:std::cout << "I'm using cout and endl from the std namespace" << std::endl;

使用cout进行C++输出

cout << "Come up and C++ me some t ime.";

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

C++代码风格

  • 每条语句占一行。

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

  • 函数中的语句都相对于花括号进行缩进。

  • 与函数名称相关的圆括号周围没有空白。

C++语句

声明语句与变量

int carrots;

这条语句提供了两项信息:需要的内存以及该内存单元的名称。在C++中,所有变量都必须声明。如果省略了 carrots.cpp中的声明,则当程序试图使用carrots时,编译器将指出错误。

赋值语句

int Steinway;
int baldwin;
int yamaha;
yamaha = baldwin = Steinway = 88;

C++相比于C可以连续使用赋值运算符。

类简介

类是用户定义的一种数据类型。要定义类,需要描述它能够表示什么信息和可对数据执行哪些操作。类之于对象就像类型之于变量。也就是说,类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。

函数

有返回值的函数

有返回值的函数将生成一个值,而这个值可赋给变量或在其他表达式中使用。例如,标准C/C++库包含一个名为sqrt()的函数,它返回平方根。假设要计算6.25的平方根,并将这个值赋给变量x,则可以在程序中使用下面的语句:

x = sqrt(6.25); // returns the value 2.5 and assigns it to x

表达式sqrt(6.25)将调用sqrt()函数。表达式sqrt(6.25)被称为函数调用,被调用的函数叫做被调用函数(called function),包含函数调用的函数叫做调用函数(calling function)

没有返回值的函数

可以在原型中使用关键字void来指定返回类型,以指出函数没有返回值:

void bucks(double); // prototype for function with no return value

用户定义的函数

// ourfunc.cpp -- defining your own function
#include <iostream>
void simon(int); // function prototype for simon()
int main()
(
    using namespace std;
    simon(3); // call the simon() function
    cout << "Pick an integer:";
    int count;
    cin >> count;
    simon(count); // call it again
    cout << "Done!" << endl;
    return 0;
)
void simon(int n) // define the simon() function
(
    using namespace std;
    cout << "Simon says touch your toes " << n << " times." << endl; 
} // void functions don't need return statements

运行结果:

Simon says touch your toes 3 times.
Pick an integer: 512
Simon says touch your toes 512 times.
Done!

函数格式

type functionname(argumentlist)
(
    statements
}

C++不允许将函数定义嵌套在另一个函数定义中。每个函数定义都是独立的,所有函数的创建都是平等的。

函数头

void simon(int n)

注意:关键字是C++专用的,因此不能用作他用。但函数名可以用作变量名(尽量不要这样做)。

总结

C++程序由一个或多个被称为函数的模块组成。程序从main()函数(全部小写)开始执行,因此该函数必不可少。函数由函数头和函数体组成。函数头指出函数的返回值(如果有的话)的类型和函数期望通过参数传递给它的信息的类型。函数体由一系列位于花括号((})中的C++语句组成。

有多种类型的C++语句,包括下述6种:

  • 声明语句:定义函数中使用的变量的名称和类型。

  • 赋值语句:使用赋值运算符(=)给变量赋值。

  • 消息语句:将消息发送给对象,激发某种行动。

  • 函数调用:执行函数。被调用的函数执行完毕后,程序返回到函数调用语句后面的语句。

  • 函数原型:声明函数的返回类型、函数接受的参数数量和类型。

  • 返回语句:将一个值从被调用的函数那里返回到调用函数中。

类是用户定义的数据类型规范,它详细描述了如何表示信息以及可对数据执行的操作。对象是根据类规范创建的实体,就像简单变量是根据数据类型描述创建的实体一样。

C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istream和ostream类的实例,这两个类是在iostream文件中定义的。为ostream类定义的插入运算符(<<)使得将数据插入到输出流成为可能;为istream类定义的抽取运算符(>>)能够从输入流中抽取信息。cin和cout都是智能对象,能够根据程序上下文自动将信息从一种形式转换为另一种形式。

C++可以使用大量的C库函数。要使用库函数,应当包含提供该函数原型的头文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值