C++函数之基本介绍
C++程序由一个或多个被称为函数的模块组成。程序从main()函数开始执行,因此该函数必不可少。
C++函数分两种:有返回值的和无返回值的。
参数是发送给函数的信息,而返回值是从函数中返回去的值,在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型,每个函数都应该有其函数原型。对于C++函数库中的每个函数,都在一个或多个头文件中提供了其原型。有的函数需要多个参数,也有的不需要任何参数,有的函数有返回值,有的没有。比如,当一个函数把值发送给屏幕而不是调用程序时,不需要返回值。但是C++对于返回值的类型有一定的限制:不能是数组!可以是其他任何类型(整数、浮点数、指针、甚至可以是结构和对象!),有趣的是,虽然不能直接返回数组,但是可以把数组作为结构或对象组成部分来返回。
对于名称空间的使用,只让需要访问名称空间std的函数访问它是更好的选择,让程序能够std有多种方法,主要列举四种:
(1)、将using namespace std;放在函数定义之前,让文中所有的函数都能够使用名称空间std中所有的元素。
(2)、将using namespace std;放在特定的函数定义中,只让该函数使用。
(3)、在特定的函数中使用类似using std::cout;这样的编译指令,而不是using namespace std;让该函数能够使用指定的元素,如cout。
(4)、完全不使用编译命令using,而在需要使用名称空间std中的元素时,使用前缀std::,如std:: cout<<”I’m using cout and endlfrom the std namespace”<<std::endl;
在函数中有多种类型的C++语句,包括以下6种:声明语句;赋值语句;消息语句;函数调用;函数原型;返回语句。
类是用户定义的数据类型规范,它详细描述了如何表示信息以及可对数据执行的操作。对象是根据类规范创建的实体,就像简单变量是根据数据类型描述创建的实体一样。
要使用C++函数必须完成三个方面的工作:提供函数定义;提供函数原型;调用函数。
其中库函数是已经定义和编译好的函数,可以使用标准库头文件来提供其原型,因此只需要正确的调用即可。为什么需要原型?原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型(有的话)以及参数的类型和数量告诉编译器。没有原型也是可以的,但这导致编译器效率不高,若函数在不同的文件中的话将无法访问这些代码。避免使用函数原型的唯一方法是在首次使用函数之前定义它,但若要把main()放在最前面则不可行。获得原型最简单的方法就是,复制函数定义中的函数头。
原型可以确保以下几点:
l 编译器正确处理函数返回值
l 编译器检测使用的参数数目是否正确
l 编译器检测使用的参数类型是否正确,若不正确则转换为正确的类型(可能的话)
C++通常按值传递参数,这意味着将数值参数传递给函数,而后者将其赋给一个新的变量。用于接收传递值得变量称为形参(parameter),传递给函数的值被称为实参(argument)。
// twoarg.cpp -- a function with 2 arguments
#include <iostream>
using namespace std;
void n_chars(char, int);
int main()
{
inttimes;
char ch;
cout << "Enter a character: ";
cin>> ch;
while (ch != 'q') // q toquit
{
cout << "Enter an integer: ";
cin >> times;
n_chars(ch, times); // function with two arguments
cout << "\nEnter another character or press the"
" q-key to quit: ";
cin >> ch;
}
cout << "The value of times is " << times <<".\n";
cout << "Bye\n";
//cin.get();
//cin.get();
return 0;
}
void n_chars(char c, int n) // displays c ntimes
{
while (n-- > 0) //continue until n reaches 0
cout << c;
}
函数中使用cin>>ch,而不是cin.get(ch)或ch=cin.get()来读取一个字符,这两个函数读取所有的输入字符包括空格和换行符,而cin>>跳过空格和换行符。当用户对程序提示作出响应时,必须在每行的最后按enter键以生成换行符,cin>>ch可以轻松的跳过这些换行符,当输入的下一个字符为数字时,cin.get()将读取后面的换行符。