C++ Primer Plus学习随记(二)

2.4 函数

C++函数分两种:有返回值的和没有返回值的。

2.4.1 使用有返回值的函数

有返回值的函数将生成一个值,而这个值可赋值给变量或在其他表达式中使用。

圆括号中的值是发送给函数的信息,这被称为传递给函数。以这种方式发送给函数的值叫作参数。

函数原型之于函数就像变量声明之于变量----指出涉及的类型。

double sqrt(double); 第一个double意味着sqrt()将返回一个double值。括号中的double意味着sqrt()需要一个double参数。

在程序中使用sqrt()时,也必须提供原型。可以用两种方法来实现:

  • 在源代码文件中输入函数原型;
  • 包含头文件cmath(老系统为math.h),其中定义了原型。

原型只描述函数接口,它描述的是发送给函数的信息和返回的信息。而定义中包含了函数的代码,如计算平方根的代码。

使用库函数:

C++库函数存储在库文件中。

2.4.2 函数变体

int rand(void); 关键字void明确指出,该函数不接收任何参数。如果省略void,让括号为空,则C++将其解释为一个不接受任何参数的隐式声明。

void bucks(double);在原型中使用关键字void来指定返回类型,以指出函数没有返回值。

有返回值的函数被称为函数(function);没有返回值的函数被称为过程(procedure)或子程序(subroutine)。

2.4.3 用户定义的函数

1.函数格式

首先,有一个函数头;然后是花括号中的函数体。

2.函数头

void simon(int n);开头的void表明simon()没有返回值,因此调用simon()不会生成可在main()中将其赋值给变量的数字。

int main();开头int表明,main()返回一个整数;空括号表明,main()没有参数。对于有返回值的函数,使用关键字return来提供返回值,并结束函数。

关键字

关键字都是C++专用的,不能他用,不能将return用作变量名

2.4.4 用户定义的有返回值的函数

函数原型描述了函数接口,即函数如何与程序的其他部分交互。参数列表指出了何种信息将被传递给函数,函数类型指出了返回值的类型。

在函数stonetobl()短小、简单,但包含了全部的函数特性:

  • 有函数头和函数体;
  • 接受一个参数;
  • 返回一个值;
  • 需要一个原型。

2.4.5 在多函数程序中使用using编译指令

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

  • 将using namespace std;放在函数定义之前,让文件中所有的函数都能够使用名称空间std中所有的元素。
  • 将using namespace std;放在特定的函数定义中,让该函数能够使用名称空间std中的所有元素。
  • 在特定的函数中使用类似using std::cout;这样的编译指令,而不是using namespace std;让该函数能够使用指定的元素,如cout。
  • 完全不使用编译指令using,而在需要使用名称空间std中的元素时,使用前缀std::。

命名约定

函数命名,例子如下:

Myfunction()

myfunction()

myFunction()

my_function()

my_funct()

2.5 总结

C++程序由一个或多个被称为函数的模块组成。程序从main()函数(全部小写)开始执行,因此该函数必不可少。函数由函数头和函数体组成。

函数头指出函数的返回值(如果有的话)的类型和函数期望通过参数传递给它的信息的类型。函数体由一系列位于花括号({})中的C++语句组成。

由多种类型的C++语句,包括下述6种。

  • 声明语句:定义函数中使用的变量的名称和类型。
  • 赋值语句:使用赋值运算符(=)给变量赋值。
  • 消息语句:将消息发送给对象,激发某种行动。
  • 函数调用:执行函数。被调用的函数执行完毕后,程序返回到函数调用语句后面的语句。
  • 函数原型:声明函数的返回类型、函数接受的参数数量和类型。
  • 返回语句:将一个值从被调用的函数那里返回到调用函数中。

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

C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istreasm和ostream类的实例,这两个类是iostream文件中定义的。为ostream类定义的插入运算符(<<)使得将数据插入输出流成为可能;

为istream类定义的运算符(>>)能够从输入流中抽取信息。cin和cout都是智能对象,能够根据程序上下文自动将信息从一种形式转换为另一中形式。

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

2.6 复习题

1.C++程序的模块叫什么?

答:它们叫作函数。

2.下面的预处理器编译指令是做什么用的? #include <iostream>

答:这将导致在最终的编译之前,使用iostream文件的内容替换该编译指令。

3.下面的语句是做什么用的?using namespace std;

答:它使得程序可以使用std名称空间中的定义。

4.什么语句可以用来打印短语“Hello,world”,然后开始新的一行?

答:cout << “Hello,world” << endl;

5.什么语句可以用来创建名为cheeses的整数变量?

答:int cheeses

6.什么语句可以用来将值32赋给变量cheeses?

答:cheesses = 32;

7.什么语句可以用来将键盘输入的值读入变量cheesses中?

答:cin >> cheeses;

8.什么语句可以用来打印“We have X varieties of cheesse,”,其中X为变量cheeses的当前值。

答:cout << "We have" << cheeses <<  "varieties of cheesse," << endl;

9.下面的函数原型指出了关于函数的那些信息?

int froop(double t);

答:调用函数froop()时,应提供一个参数,该参数的类型为double,而该函数将返回一个int值。

void rattle(int n);

答:函数rattle()接受一个int参数且没有返回值。

int prune(void);

答:函数prune()不接受任何参数且返回一个int值。

10.定义函数时,在什么情况下不必使用关键字return?

答:当函数的返回类型为void时,不用在函数中使用return。然而,如果不提供返回值,则可以使用它,return;

11.假设您编写的main()函数包含如下代码:

cout << "Please enter your PIN: ";

而编译器指出cout是一个未知标识符。导致这种问题的原因很可能是什么?指出3种修复这种问题的方法。

答:①加using namespace std;②cout前面加std::;③cout前面加using std::;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值