相关疑难解决方法(0)

"静态"在C中意味着什么?

static在C代码中看到了不同地方使用的单词; 这就像C#中的静态函数/类(其中实现是跨对象共享的)?

c syntax static

1062
推荐指数
15
解决办法
86万
查看次数

函数内部的Python等价的静态变量是什么?

什么是这个C/C++代码的惯用Python等价物?

void foo()
{
    static int counter = 0;
    counter++;
    printf("counter is %d\n", counter);
}
Run Code Online (Sandbox Code Playgroud)

具体来说,如何在功能级别实现静态成员,而不是类级别?将函数放入类中会改变什么吗?

python

570
推荐指数
18
解决办法
31万
查看次数

Julia是否支持带有函数范围的静态变量

在C中,可以声明具有局部函数范围的静态变量(示例).

朱莉娅可以做类似的事吗?

我的用例是声明子函数,但不希望Julia每次执行代码时都必须重新解析它们.在函数之外声明它们是丑陋的并且给它们更高的范围,我想避免它.

例:

function foo(x)
    static bar = t -> stuff with t

    ...
    bar(y)
    ...
end
Run Code Online (Sandbox Code Playgroud)

虽然我可以在foo()之外声明bar(),但我更喜欢bar只在本地命名空间中.

谢谢.

static julia

10
推荐指数
3
解决办法
1859
查看次数

是否对函数的每次递归调用使用相同的静态变量?

根据我的理解,每个被调用的函数在程序堆栈中都有一些分配给它的内存,即使同一个函数递归调用自身(即每个调用在程序堆栈中都有自己的内存),这也是正确的.请回答以下两个问题:

如果变量在函数中声明为static,那么同一个变量/同一个副本是否会用于该函数的所有递归调用?

如果变量未声明为static(例如,简单地称为"int x"),那么对函数的每个递归调用是否都有自己的变量副本?如果是,那是从其他函数调用函数时通常会发生的方式,包括递归调用吗?

#include<stdio.h>
#include<stdlib.h>

int main()
{
    static int x=0;
    x++;
    printf("Team %d\n",x);
    if(x<10)
        main();
    else
        exit;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Team 1
Team 2
Team 3
Team 4
Team 5
Team 6
Team 7
Team 8
Team 9
Team 10
Run Code Online (Sandbox Code Playgroud)

c recursion static

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

在函数内部初始化静态变量会发生什么

绊倒这个问题在这里阅读更多(c ++,但这个问题在C/C++ AFAIN中的作用相同)我没有提到函数内部真正发生的事情.

void f(){
  static int c = 0;
  printf("%d\n",c++);
}

int main(){
  int  i = 10;
  while(i--)
    f();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这个片段中,c生命周期是程序的整个执行,因此该行static int c = 0;在下一次调用中没有意义,f()因为c已经是已定义的(静态)变量,并且赋值部分也已过时(在下次调用中f()),因为它只在第一次发生.

那么,编译器做了什么?不把它分割f成2个功能- f_init, f_the_real_thing其中f_init初始化和f_the_real_thing版画,并调用1次f_init,并从该年起,只要求f_the_real_thing

c static

4
推荐指数
2
解决办法
804
查看次数

在C中创建一个静态变量

随着staticC一个能保持一个stack变量四周,创建功能甚至存在了.

但是,在这种情况下,

void static_func() {
    static int var = 1;
    var += 1;
}
Run Code Online (Sandbox Code Playgroud)

我可以访问var外部static_func()并返回其值.我们假设static_func()在该中调用三次main(),则值为var3.

但是,1每次执行该功能时都会设置它.为什么我仍然得到3的价值?!

c

-1
推荐指数
1
解决办法
83
查看次数

标签 统计

c ×4

static ×4

julia ×1

python ×1

recursion ×1

syntax ×1