网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月17日漏签0天
c语言吧 关注:798,968贴子:4,355,607
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回c语言吧
>0< 加载中...

只调用了一次的函数居然死循环?变量作用域的疑惑!

  • 只看楼主
  • 收藏

  • 回复
  • 秦殇灬祸首
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<stdio.h>
void printf_letter2(void);
int ctr;
char letter1 = 'x';
char letter2 = '=';
int main()
{
for (ctr = 0; ctr < 10; ctr++)
{
printf("%c", letter1);
printf_letter2();
}
}
void printf_letter2(void)
{
/*static int ctr = 0;在函数里定义静态变量之后,才停止无休止循环*/
for (ctr = 0; ctr < 2; ctr++)
printf("%c", letter2);
}
以上就是源码,将倒数第4行注释掉之后,结果就是x==x==...死循环,只有把倒数第4行还原回来才能正常显示。而注释掉的时候,ctr使用的是全局变量,在开头已经声明好了,而主函数中是调用了10次printf_letters函数,应该是显示10个x==才对吧。
之后做了一个测试,将主函数中调用的printf_letter2();移出for循环,显示的是xxxxxxxxxx==,这就说明了printf_letter2函数本身没问题啊而在for循环体中,我也并未传参,为何会出现这样的死循环?


  • 秦殇灬祸首
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@小_埃 @御宅小受


科大讯飞股份有限公司
科大讯飞与尚硅谷联合打造的C语言精品课程,适合在校大学生及对C语言感兴趣的职场人士,技术深入浅出、内容实践性强,帮助掌握C语言语法,实现C语言程序编写。
2025-05-17 00:41广告
立即查看
2025-05-17 00:41:51
广告
  • 心眼观物
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
for (ctr = 0; ctr < 10; ctr++)
{
printf("%c", letter1);
for (ctr = 0; ctr < 2; ctr++)
{
printf("%c", letter2);
}
}
你说会不会死循环


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示