小编Ahm*_*der的帖子

用未指定大小定义的静态数组,空括号?

对于下面的C++代码片段:

class Foo {
    int a[]; // no error
};

int a[];     // error: storage size of 'a' isn't known

void bar() {
    int a[]; // error: storage size of 'a' isn't known
}
Run Code Online (Sandbox Code Playgroud)

为什么成员变量也不会导致错误?这个成员变量的含义是什么?

我通过CodeBlocks 8.02使用gcc版本3.4.5(mingw-vista special).

在Visual Studio Express 2008 - Microsoft(R)C/C++ Optimizing Compiler 15.00.30729.01 for 80x86上,我收到以下消息:

class Foo {
    int a[]; // warning C4200: nonstandard extension used : zero-sized array in struct/union - Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
};

int …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction class static-array

9
推荐指数
2
解决办法
2万
查看次数

如何检测根递归调用?

假设我们正在编写一个简单的递归函数fib(n)来计算第n个Fibonacci数.现在,我们希望函数打印第n个数字.由于重复调用相同的函数,必须存在仅允许根调用打印的条件.问题是:如何在不传递任何其他参数或使用全局/静态变量的情况下编写此条件.

所以,我们正在处理这样的事情:

int fib(int n) {
    if(n <= 0) return 0;
    int fn = 1;
    if(n > 2) fn = fib(n-2) + fib(n-1);
    if(???) cout << fn << endl;
    return fn;
}

int main() {
    fib(5);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为root调用与所有子节点的不同之处在于返回不同的调用者,即本例中的main方法.我想知道是否可以使用此属性来编写条件以及如何编写条件.

更新:请注意,这是一个人为的例子,只是为了表达这个想法.这应该从标签中清楚.我不是在寻找标准解决方案.谢谢.

c recursion stack

5
推荐指数
2
解决办法
669
查看次数

标签 统计

c ×1

c++ ×1

class ×1

compiler-construction ×1

recursion ×1

stack ×1

static-array ×1