亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

運行后,輸出什么?麻煩分步解釋下!謝!!

運行后,輸出什么?麻煩分步解釋下!謝?。?/h1>
素胚勾勒不出你 2022-06-16 15:11:26
#include "stdio.h"void incr(){static s=0;++s;printf("%d\n",s);}main(){incr();incr();incr();}
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

要是s前面不加static修飾,結果當然就會是111,但加上后,就變成了123,
原因在于靜態局部變量改變了變量的生存期.局部變量是存儲在棧中,但靜態局部變量是存儲在靜態內存區,作用域是整個程序,所以函數每次被調用,對靜態局部變量,不會再對他初始化,它可以記錄函數的調用次數.
但它的作用域沒變,在函數體外還是不能引用它,

查看完整回答
反對 回復 2022-06-20
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

s沒定義.
static int s=0;
表示靜態變量,程序運行完后,仍在內存中,
第一次incr();s=1,輸出1
第2次incr();s=2,輸出2
第3次incr();s=3,輸出3

查看完整回答
反對 回復 2022-06-20
?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

#include "stdio.h"
void incr()
{
static s=0; //static 類型只初始化一次
++s;
printf("%d\n",s);
}

main()
{
incr(); //s=1
incr(); //由于s為static,s的值仍為1,現在++s后變成2
incr(); //3 解釋同上
}


查看完整回答
反對 回復 2022-06-20
  • 3 回答
  • 0 關注
  • 211 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號