首页 > 试题广场 >

有函数原型 void f (int & n);

[问答题]

有函数原型

void f (int & n);

和函数调用

int a;

//…

f(a);

有人说,因为n是a的引用,则在函数f中访问n相当于访问a,所以,可以在f的函数体内直接使用变量名a。这种说法正确吗?为什么?编写一个验证程序。

推荐

形式参数n的作用域是f函数,实际参数a的作用域是调用f函数的模块(例如main函数),所以在f函数中可见n而不可见a。因此,这种说法不正确。f函数内不能直接使用变量名a,只能通过别名n访问a。

验证程序:

#include<iostream>
using namespace std;
void f ( int&n );
int main()
{
int a = 1 ;
f( a );
cout<<"a="<<a<<endl;
}
void f ( int&n )
{
a++;        //错误,直接使用a
n++;        //正确
}

产生编译错误:error C2065: “a”:未声明的标识符

发表于 2018-05-07 11:34:59 回复(0)