鱼C论坛

 找回密码
 立即注册
查看: 1755|回复: 11

[已解决]静态变量报错

[复制链接]
发表于 2022-4-7 22:29:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  3. static int count = 0;

  4. void p();
  5. void p2();
  6. void p(){
  7.         count++;
  8. }
  9. void p2(){
  10.         count++;
  11. }

  12. int main(){
  13.         p();
  14.         p2();
  15.         printf("%d", count);
  16.         return 0;
  17. }
复制代码

如上 , 报错 , 我该怎么改 , 求~
最佳答案
2022-4-7 22:32:38
  1. //#include <bits/stdc++.h>
  2. #include <cstdio>
  3. //using namespace std;

  4. static int count = 0;

  5. void p();
  6. void p2();
  7. void p(){
  8.         count++;
  9. }
  10. void p2(){
  11.         count++;
  12. }

  13. int main(){
  14.         p();
  15.         p2();
  16.         printf("%d", count);
  17.         return 0;
  18. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-7 22:32:38 | 显示全部楼层    本楼为最佳答案   
  1. //#include <bits/stdc++.h>
  2. #include <cstdio>
  3. //using namespace std;

  4. static int count = 0;

  5. void p();
  6. void p2();
  7. void p(){
  8.         count++;
  9. }
  10. void p2(){
  11.         count++;
  12. }

  13. int main(){
  14.         p();
  15.         p2();
  16.         printf("%d", count);
  17.         return 0;
  18. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-7 22:36:26 | 显示全部楼层
整个代码,除了你的引用不同标准C。其它代码都没问题 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-4-7 22:42:50 | 显示全部楼层

欸 , 为啥c++写这个不行啊
为啥啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-7 22:43:25 | 显示全部楼层
ba21 发表于 2022-4-7 22:36
整个代码,除了你的引用不同标准C。其它代码都没问题 。

唔 , 我用的c++
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-7 22:48:15 | 显示全部楼层

okok 我知道了 , count跟别的重名了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-7 22:48:42 | 显示全部楼层
本帖最后由 jackz007 于 2022-4-7 22:50 编辑

        全局变量不用声明 static,自然就是静态变量。只有函数内的局部变量才有必要声明 static,这样,声明过的局部变量就不会因为函数调用结束而消失。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-7 22:48:55 | 显示全部楼层
ount 改个名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-4-7 22:50:40 | 显示全部楼层
本帖最后由 柿子饼同学 于 2022-4-7 22:53 编辑
jackz007 发表于 2022-4-7 22:48
全局变量不用声明 static,自然就是静态变量。只有函数内的局部变量才有必要声明 static。


对哦 , 谢谢~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-7 22:53:39 | 显示全部楼层

好的 , 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

请问 , 改成这样为啥报错了
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. void p();
  4. void p2();
  5. void p(){
  6.         static int c = 0;
  7.         c++;
  8. }
  9. void p2(){
  10.         c++;
  11. }

  12. int main(){
  13.         p();
  14.         p2();
  15.         printf("%d", c);
  16.         return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-7 23:28:42 | 显示全部楼层
本帖最后由 jackz007 于 2022-4-7 23:31 编辑
  1. void p2(){
  2.         c++;      // c 的定义呢?
  3. }
复制代码

        在 p() 中定义的静态变量 c 只是一个局部变量,属于 p(),不可以在另一个函数中进行访问,如果需要跨函数使用同一个变量,那就应该使用全局变量,而不是静态变量。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 02:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表