柿子饼同学 发表于 2022-4-7 22:29:21

静态变量报错

#include <bits/stdc++.h>
using namespace std;

static int count = 0;

void p();
void p2();
void p(){
      count++;
}
void p2(){
      count++;
}

int main(){
      p();
      p2();
      printf("%d", count);
      return 0;
}
如上 , 报错 , 我该怎么改 , 求~

人造人 发表于 2022-4-7 22:32:38

//#include <bits/stdc++.h>
#include <cstdio>
//using namespace std;

static int count = 0;

void p();
void p2();
void p(){
      count++;
}
void p2(){
      count++;
}

int main(){
      p();
      p2();
      printf("%d", count);
      return 0;
}

ba21 发表于 2022-4-7 22:36:26

整个代码,除了你的引用不同标准C。其它代码都没问题 。

柿子饼同学 发表于 2022-4-7 22:42:50

人造人 发表于 2022-4-7 22:32


欸 , 为啥c++写这个不行啊
为啥啊

柿子饼同学 发表于 2022-4-7 22:43:25

ba21 发表于 2022-4-7 22:36
整个代码,除了你的引用不同标准C。其它代码都没问题 。

唔 , 我用的c++{:10_254:}

柿子饼同学 发表于 2022-4-7 22:48:15

人造人 发表于 2022-4-7 22:32


okok 我知道了 , count跟别的重名了

jackz007 发表于 2022-4-7 22:48:42

本帖最后由 jackz007 于 2022-4-7 22:50 编辑

      全局变量不用声明 static,自然就是静态变量。只有函数内的局部变量才有必要声明 static,这样,声明过的局部变量就不会因为函数调用结束而消失。

ba21 发表于 2022-4-7 22:48:55

ount 改个名

柿子饼同学 发表于 2022-4-7 22:50:40

本帖最后由 柿子饼同学 于 2022-4-7 22:53 编辑

jackz007 发表于 2022-4-7 22:48
全局变量不用声明 static,自然就是静态变量。只有函数内的局部变量才有必要声明 static。

对哦 , 谢谢~

柿子饼同学 发表于 2022-4-7 22:53:39

ba21 发表于 2022-4-7 22:48
ount 改个名

好的 , 谢谢
{:10_254:}

柿子饼同学 发表于 2022-4-7 22:58:44

jackz007 发表于 2022-4-7 22:48
全局变量不用声明 static,自然就是静态变量。只有函数内的局部变量才有必要声明 static,这样,声 ...

请问 , 改成这样为啥报错了{:10_254:}{:10_266:}#include <bits/stdc++.h>
using namespace std;
void p();
void p2();
void p(){
      static int c = 0;
      c++;
}
void p2(){
      c++;
}

int main(){
      p();
      p2();
      printf("%d", c);
      return 0;
}

jackz007 发表于 2022-4-7 23:28:42

本帖最后由 jackz007 于 2022-4-7 23:31 编辑

void p2(){
      c++;      // c 的定义呢?
}
      在 p() 中定义的静态变量 c 只是一个局部变量,属于 p(),不可以在另一个函数中进行访问,如果需要跨函数使用同一个变量,那就应该使用全局变量,而不是静态变量。
页: [1]
查看完整版本: 静态变量报错