C++ 静态短引用在递归函数中产生错误
以下是全部资料来源:C++ 静态短引用在递归函数中产生错误,c++,recursion,C++,Recursion,以下是全部资料来源: #include <iostream> void recursion(static short &di); using namespace std; int main() { short pi = 1; for(pi; pi > 0; pi++) { cout << "Hi, pi!" << "\n"; recursion(pi); } } void recu
#include <iostream>
void recursion(static short &di);
using namespace std;
int main()
{
short pi = 1;
for(pi; pi > 0; pi++)
{
cout << "Hi, pi!" << "\n";
recursion(pi);
}
}
void recursion(static short &di)
{
di++;
if(di < 20)
{
return;
}
else
{
cout << di << "\n";
}
}
#包括
无效递归(静态短路和di);
使用名称空间std;
int main()
{
短pi=1;
对于(pi;pi>0;pi++)
{
不能为函数参数指定静态
存储持续时间
您仍然可以将对静态
变量的引用传递给函数,并且该引用仍将引用静态
变量
例如:
int main()
{
static short pi = 1;
// ^^^^^^
for(pi; pi > 0; pi++)
{
cout << "Hi, pi!" << "\n";
recursion(pi);
}
// ...
}
void recursion(short &di)
{
// ...
}
这样声明的变量具有自动存储持续时间;这意味着当它“超出范围”时,对象将被销毁。如果要调用foo()
100次:
int main()
{
for (int i = 0; i < 100; ++i)
foo();
}
以这种方式声明的变量在第一次使用之前将被初始化一次,并且即使在其超出范围后仍将继续有效。它将保留其值,直到重新分配,直到程序结束
您的代码:
int main()
{
short pi = 1;
for(pi; pi > 0; pi++)
{
cout << "Hi, pi!" << "\n";
recursion(pi);
}
}
intmain()
{
短pi=1;
对于(pi;pi>0;pi++)
{
cout错误消息非常明确;您不能为形式参数使用静态
限定符;您需要声明
void recursion(short &di);
然后再定义
void recursion(short &di) {
di++;
if(di < 20)
return;
else
cout << di << "\n";
}
void递归(short&di){
di++;
如果(di<20)
返回;
其他的
我完全不知道静态参数会读什么,会想什么——那个错误消息是非常琐碎的!
void recursion(short &di);
void recursion(short &di) {
di++;
if(di < 20)
return;
else
cout << di << "\n";
}