|
【实训目的】作用域
【第 1 步】实训内容介绍
1. 实训内容介绍
2. 块作用域(一)
3. 块作用域(二)
4. 文件作用域
5. 函数作用域
6. 实训结束
【Jitor 校验第 1 步】我已阅读实训内容介绍 // 送分题。直接点击。
【第 2 步】块作用域(一)
1、在项目 cpp5 中创建名为 cpp5code 的源代码文件,如果项目不存在,则先创建项目,然后创建源代码文件。
2、将下述代码复制到 cpp5code 中:
#include <iostream.h>
void main(void) {
// cout << " 块 a={" << a << "} b={" << b << "}\n"; // 错误:未声明就使用
int a = 103, b = 104;
// int a = 2; // 错误:在同一个块中,不能定义同名变量
cout << " 块 a={" << a << "} b={" << b << "}\n";
}
运行结果如下:
块 a={103} b={104}
Press any key to continue
【Jitor 校验第 2 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。
【第 3 步】块作用域(二)
将下述代码复制到 cpp5code 中:
#include <iostream.h>
void main(void) {
int a = 103, b = 104;
cout << " 外层块 a={" << a << "} b={" << b << "}\n";
{ // 花括号括起来的就是块,常见的是 if, while, for 等的语句块
int a = 2; // 在不同块中,可以有同名变量。作用域不同,两个同名变量没有联系
b = 5;
cout << " 内层块 a={" << a << "} b={" << b << "}\n";
}
cout << " 外层块 a={";
cout << a << "} b={" << b << "}\n";
}
运行结果如下:
外层块 a={103} b={104}
内层块 a={2} b={5}
外层块 a={103} b={5}
Press any key to continue
在不同块中,则可以声明同名变量,但应该避免这样做,因为降低了可读性。
【Jitor 校验第 3 步】// 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。
【第 4 步】文件作用域
将下述代码复制到 cpp5code 中:
#include <iostream.h>
int a, b; // 在函数之外的变量是文件作用域
void swap(); // 交换a、b变量值的函数
void main(void) {
a = 2;
b = 3;
cout << "swap之外 a={" << a << "}, b={" << b << "}\n";
swap();
cout << "swap之外 a={" << a << "}, b={" << b << "}\n";
}
void swap(){
cout << "swap内 a={" << a << "}, b={" << b << "}\n";
int t = a;
a = b;
b = t;
cout << "swap内 a={" << a << "}, b={" << b << "}\n";
}
运行结果如下:
swap之外 a={2}, b={3}
swap内 a={2}, b={3}
swap内 a={3}, b={2}
swap之外 a={3}, b={2}
Press any key to continue
声明在函数外的变量,具有文件作用域,因此swap函数可以实现对这两个变量值的交换。
【Jitor 校验第 4 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。
【第 5 步】函数作用域
将下述代码复制到 cpp5code 中:
#include <iostream.h>
// 函域作用域的例子
int add(int, int);
void main(void) {
int a = 3, b = 4;
int c = add(a, b);
cout << " c={" << c << "}\n";
}
int add(int x, int y){
// int x = 10; // 出错:x 的作用域是整个函数,函数内不能再次定义同名变量
cout << " add 函数 x={" << x << "}, y={" << y << "}\n";
return x + y;
}
运行结果如下:
add 函数 x={3}, y={4}
c={7}
Press any key to continue
观察代码和运行结果,理解函数作用域,在函数内不允许声明同名变量。
【Jitor 校验第 5 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。
【第 6 步】实训总结
本次实训学习了三种作用域。
【Jitor 校验第 6 步】我已阅读实训总结 // 送分题。直接点击。
仍有疑问 ? 联系QQ 9429444(陈海云) : 返回首页 |