1.对于下面的情况,应使用哪种存储方案?
a。homer是函数的形参。
b。secret变量由两个文件共享。
c。topsercret变量由一个文件中所有函数共享,但对于其他文件来说是隐藏的。
d。beencalled记录包含他的函数被调用的次数。
答:a。自动变量;b。外部变量;c。静态内部变量;d。无链接性的静态变量。
c补充:也可以在一个未命名的名称空间中定义
2。using声明和using编译指令有何区别?
答:
①using声明只使用名称空间中的一个名称,using编译指令使用名称空间中的所有名称;
②using声明在遇见同名内部变量(但外部变量不会发生这种情况)时,可能导致名称冲突(使用外部时,同名外部会被隐藏);但using编译指令不会,他会隐藏外部,或者被内部隐藏。
补充③using声明其作用域与using声明所在的声明区域相同(我知道,但我觉得没必要强调,就相当于声明了一个变量一样)。using编译指令就像在一个包含using声明和名称空间本身的最小声明区域中声明了这些名称一样。
3。重新编写下面的代码,使其不使用using声明和using编译指令。
#include
using namespace std;
int main()
{
double x;
cout << "Enter value: ";
while (! (cin>>x) )
{
cout << "Bad input. Please enter a number: ";
cin.clear();
while (cin.get() != '\n' )
continue;
}
cout << "Value = " << x << endl;
return 0;
}
答:修改为:
#include
int main()
{
double x;
std::cout << "Enter value: ";
while (! (std::cin>>x) )
{
std::cout << "Bad input. Please enter a number: ";
std::cin.clear();
while (std::cin.get() != '\n' )
continue;
}
std::cout << "Value = " << x << std::endl;
return 0;
}
4。重新编写下面的代码,使之使用using声明,而不是using编译指令。
#include
using namespace std;
int main()
{
double x;
cout << "Enter value: ";
while (! (cin>>x) )
{
cout << "Bad input. Please enter a number: ";
cin.clear();
while (cin.get() != '\n' )
continue;
}
cout << "Value = " << x << endl;
return 0;
}
答:修改为:
#include
using std::cin;
using std::cout;
using std::endl;
int main()
{
double x;
cout << "Enter value: ";
while (! (cin>>x) )
{
cout << "Bad input. Please enter a number: ";
cin.clear();
while (cin.get() != '\n' )
continue;
}
cout << "Value = " << x << endl;
return 0;
}
5。在一个文件中调用average(3,6)函数时,它返回两个int参数平均值,在同一个程序的另一个文件中调用时,它返回两个int参数的double平均值。应如何实现?
答:需要将两个函数的链接性变为内部。具体方式为:
第一个文件,使用函数原型:static int average(int a,int b);然后在该文件中加入函数定义;
第二个文件,使用函数原型:static double average(int a,int b); 然后写对应的函数定义,并加入到该文件之中。
补充:也可以在未命名的名称空间中包含定义
6.下面的程序由两个文件组成,该程序显示什么内容?
//file1.cpp
#include
using namespace std;
void other();
void another();
int x = 10;
int y;
int main() { int x = 4; cout << x << endl; cout << y << endl; } other(); another(); return 0; } void other() { int y = 1; cout << "Other: " << x << ", " << y << endl; } //file2.cpp #include using namespace std; extern int x; namespace { int y = -4; } void another() { cout << "another() " << x << ", " << y << endl; } 答:显示为: 10 4 0 Other: 10, 1 another(): 10, -4 7。下面的代码将显示什么内容? #include using namespace std; void other(); namespace n1 { int x = 1; } namespace n2 { int x = 2; } int main() { using namespace n1; cout << x << endl; { int x = 4; cout << x << ", " << n1::x << ", " << n2::x << endl; } using n2::x; cout << x << endl; other(); return 0; } void other() { using namespace n2; cout << x << endl; { int x = 4; cout << x << ", " << n1::x << ", " << n2::x << endl; } using n2::x; cout << x < } 显示: 1 4, 1, 2 2 2 4, 1, 2 2
{
cout <