有函数原型
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”:未声明的标识符
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
形式参数n的作用域是f函数,实际参数a的作用域是调用f函数的模块(例如main函数),所以在f函数中可见n而不可见a。因此,这种说法不正确。f函数内不能直接使用变量名a,只能通过别名n访问a。
验证程序:
产生编译错误:error C2065: “a”:未声明的标识符