|
【实训目的】函数原型说明
【第 1 步】实训内容介绍
1. 实训内容介绍
2. 函数定义位于调用之前
3. 函数定义位于函数内(错误的)
4. 函数定义位于调用之后
5. 函数定义位于在单独的文件中
6. 实训结束
【Jitor 校验第 1 步】我已阅读实训内容介绍 // 送分题。直接点击。
【第 2 步】函数定义位于调用之前
1、在项目 cpp5 中创建名为 cpp5code 的源代码文件,如果项目不存在,则先创建项目,然后创建源代码文件。
2、将下述代码复制到 cpp5code 中:
#include <iostream.h>
// 在这里补写代码
void main(void) {
int a, b;
cout << "输入两个数: ";
cin >> a >> b;
int c;
c = sub(a, b);
cout << " a 和 b 之差是 {" << c << "}\n";
}
编写一个sub函数,位于主函数 main() 之前,功能是求两数之差。
代码见简明教程【例5-5】第 1 步代码,运行结果如下:
输入两个数: 3 5
{两数差}
a 和 b 之差是 {-2}
Press any key to continue
代码如下:
// 从下一行开始复制。
#include <iostream.h>
int sub(int x, int y) {
cout << "{两数差}\n";
return x - y;
}
void main(void) {
int a, b;
cout << "输入两个数: ";
cin >> a >> b;
int c;
c = sub(a, b);
cout << " a 和 b 之差是 {" << c << "}\n";
}
// 一直复制到上一行结束。
【Jitor 校验第 2 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。
【第 3 步】函数定义位于函数内(错误的)
直接将下述代码复制到 cpp5code 中:
#include <iostream.h>
void main(void) {
int a, b;
cout << "输入两个数: ";
cin >> a >> b;
int sub(int x, int y){ // 不允许在函数中编写另一个函数,初学者经常犯这种错误
cout << "{两数差}\n";
return x - y;
}
int c;
c = sub(a, b);
cout << " a 和 b 之差是 {" << c << "}\n";
}
改写前一步骤的代码,将sub函数移到主函数 main() 之中,位于调用的代码之前(符合先声明后使用的原则)。
运行结果如下:
Compiling...
cpp5code.cpp
D:\vcpp\cpp5\cpp5code.cpp(13) : error C2601: 'sub' : local function definitions are illegal
Error executing cl.exe.
cpp5.exe - 1 error(s), 0 warning(s)
这里的错误是 “本地函数定义是非法的”,意思是函数写在了在非法的位置。
这是因为函数的定义是不能嵌套的,就是说在函数的内部不能定义函数,函数必须定义在函数之外。
代码如下:
// 从下一行开始复制。
#include <iostream.h>
void main(void) {
int a, b;
cout << "输入两个数: ";
cin >> a >> b;
int sub(int x, int y){
cout << "{两数差}\n";
return x - y;
}
int c;
c = sub(a, b);
cout << " a 和 b 之差是 {" << c << "}\n";
}
// 一直复制到上一行结束。
【Jitor 校验第 3 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。
【第 4 步】函数定义位于调用之后
改写前一步骤的代码,将sub函数移到主函数 main() 之后。
代码见简明教程【例5-5】第 3 步代码,运行结果如下:
输入两个数: 3 5
{两数差}
a 和 b 之差是 {-2}
Press any key to continue
代码如下:
// 从下一行开始复制。
#include <iostream.h>
int sub(int, int);
void main(void) {
int a, b;
cout << "输入两个数: ";
cin >> a >> b;
int c;
c = sub(a, b);
cout << " a 和 b 之差是 {" << c << "}\n";
}
int sub(int x, int y){
cout << "{两数差}\n";
return x - y;
}
// 一直复制到上一行结束。
【Jitor 校验第 4 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。
【第 5 步】函数定义位于在单独的文件中
在项目 cpp5 中创建名为 arithmetic.cpp 的源代码文件,将sub函数保存在文件arithmetic.cpp中。
在任何其他文件中调用sub函数。
代码见简明教程【例5-5】第 4 步代码,运行结果如下:
输入两个数: 3 5
{两数差}
a 和 b 之差是 {-2}
Press any key to continue
因为有了函数原型,程序可以正常运行,运行结果与第二步相同。
代码如下:
// 从下一行开始复制。
#include <iostream.h>
int sub(int, int);
void main(void) {
int a, b;
cout << "输入两个数: ";
cin >> a >> b;
int c;
c = sub(a, b);
cout << " a 和 b 之差是 {" << c << "}\n";
}
// 一直复制到上一行结束。
* 重要 *: 需要在项目内添加一个文件。
文件名为:arithmetic.cpp
代码如下:
// 从下一行开始复制。
#include <iostream.h>
int sub(int x, int y){
cout << "{两数差}\n";
return x - y;
}
// 一直复制到上一行结束。
【Jitor 校验第 5 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行(注意:有两个文件)。点击。
【第 6 步】实训总结
本次实训学习了函数应该写在哪里。总结如下:
1. 在调用之前编写函数:这时声明函数标识符和定义函数的函数体是在一起的。
2. 在函数内编写函数:这是不允许的,即函数定义不允许嵌套。
3. 在调用之后编写函数:这时应该是在调用之前声明函数(函数原型),而函数的定义(编写函数体)可以写在其他地方, 可以在调用的代码之后,甚至可以在其他的源代码文件中。
注意:在函数内可以声明函数,即函数原型。
【Jitor 校验第 6 步】我已阅读实训总结 // 切记:不要点、不要提交!
仍有疑问 ? 联系QQ 9429444(陈海云) : 返回首页 |