int & A1()
{
static int a = 10;
a++;
return a;
}
int main(int argc, const char * argv[]) {
A1();
A1();
A1();
return 0;
}
如上代码所属,执行完毕后,a的值为13,调用A1()函数是,static int a = 10 不会覆盖a的值吗?
éæå±é¨åéå ·æå±é¨ä½ç¨åãå®åªè¢«åå§åä¸æ¬¡ï¼èªä»ç¬¬ä¸æ¬¡åå§åç´å°ç¨åºä¸ä½ æ°å éç»æé½ä¸ç´åå¨ï¼ä»åå ¨å±åéçåºå«å¨äºå ¨å±åé对ææçå½æ°é½æ¯å¯è§çï¼èéæå±é¨åéåªå¯¹å®ä¹èªå·±çå½æ°ä½å§ç»å¯è§ã
å个åéçæ¯è¾åºå«ã
ä»ä½ç¨åçï¼
å ¨å±åéåå±é¨åéï¼å ¨å±åéåå±é¨åéçåºå«ä¸»è¦å¨äºèº«åå¨æä¸åï¼å ¨å±åéå¨æ´ä¸ªç¨åºçææå¯è§ï¼å±é¨åéå¨èªå·±çä½ç¨åå¯è§ãå ¨å±åéçå ååé æ¯éæçï¼å¦æ没æèµåå¼ï¼ä¼è¢«åå§å为0ãå±é¨åéçå ååé æ¯å¨æçï¼ä½äºå æ ä¸ï¼å¦æ没æåå§åï¼åå¼è§å½åå åå çå¼èå®ã
å ¨å±åéå ·æå ¨å±ä½ç¨åãå ¨å±åéåªéå¨ä¸ä¸ªæºæ件ä¸å®ä¹ï¼å°±å¯ä»¥ä½ç¨äºææçæºæ件ãå½ç¶ï¼å ¶ä»ä¸å æ¬å ¨å±åéå®ä¹çæºæ件éè¦ç¨externå ³é®åå次声æè¿ä¸ªå ¨å±åéã
éæå ¨å±åéä¹å ·æå ¨å±ä½ç¨åï¼ä»ä¸å ¨å±åéçåºå«å¨äºå¦æç¨åºå å«å¤ä¸ªæ件çè¯ï¼ä»ä½ç¨äºå®ä¹å®çæ件éï¼ä¸è½ä½ç¨å°å ¶ä»æ件éï¼å³è¢«staticå ³é®å修饰è¿çåéå ·ææ件ä½ç¨åãè¿æ ·å³ä½¿ä¸¤ä¸ªä¸åçæºæ件é½å®ä¹äºç¸åçéæå ¨å±åéï¼ä»ä»¬ä¹æ¯ä¸åçåéã
å±é¨åéä¹åªæå±é¨ä½ç¨åï¼ä»æ¯èªå¨å¯¹è±¡ï¼ä»å¨ç¨åºè¿è¡æé´ä¸æ¯ä¸ç´åå¨ï¼èæ¯åªå¨å½æ°æ§è¡æé´åå¨ï¼å½æ°çä¸æ¬¡è°ç¨ç»æåï¼åé就被æ¤éï¼å ¶æå ç¨çå åä¹è¢«æ¶åã
éæå±é¨åéå ·æå±é¨ä½ç¨åãå®åªè¢«åå§åä¸æ¬¡ï¼èªä»ç¬¬ä¸æ¬¡åå§åç´å°ç¨åºä¸ä½ æ°å éç»æé½ä¸ç´åå¨ï¼ä»åå ¨å±åéçåºå«å¨äºå ¨å±åé对ææçå½æ°é½æ¯å¯è§çï¼èéæå±é¨åéåªå¯¹å®ä¹èªå·±çå½æ°ä½å§ç»å¯è§ã
ä»å ååé çï¼
å ¨å±åéãéæå±é¨åéãéæå ¨å±åéé½å¨éæåå¨åºåé 空é´ï¼èå±é¨åéå¨æ åé 空é´ã
å ¨å±åéæ¬èº«å°±æ¯éæåå¨æ¹å¼ï¼éæå ¨å±åéå½ç¶ä¹æ¯éæåå¨æ¹å¼ãè¿ä¸¤è å¨åå¨æ¹å¼ä¸æ²¡æä»ä¹ä¸åãåºå«å¨äºééæå ¨å±åéçä½ç¨åæ¯æ´ä¸ªæºç¨åºï¼å½ä¸ä¸ªæºç¨åºç±å¤ä¸ªæºæ件ç»ææ¶ï¼ééæçå ¨å±åéå¨å个æºæ件ä¸é½æ¯ææçãèéæå ¨å±åéåéå¶äºå ¶ä½ç¨åï¼å³åªå¨å®ä¹è¯¥åéçæºæ件å ææï¼å¨åä¸æºç¨åºçå ¶ä»æºæ件ä¸ä¸è½ä½¿ç¨å®ãç±äºéæå ¨å±åéçä½ç¨åå±éäºä¸ä¸ªæºæ件å ï¼åªè½ä¸ºè¯¥æºæ件å çå½æ°å ¬ç¨ï¼å æ¤å¯ä»¥é¿å å¨å ¶ä»æºæ件ä¸å¼èµ·é误ã
1ãéæåéä¼è¢«æ¾å¨ç¨åºçéææ°æ®åå¨åºéï¼è¿æ ·å¯ä»¥å¨ä¸ä¸æ¬¡è°ç¨çæ¶åè¿å¯ä»¥ä¿æåæ¥çèµå¼ãè¿ä¸ç¹æ¯ä»ä¸å æ åéåå åéçåºå«
2ãåéç¨staticåç¥ç¼è¯å¨ï¼èªå·±ä» ä» å¨åéçä½ç¨åèå´å å¯è§ãè¿ä¸ç¹æ¯ä»ä¸å ¨å±åéçåºå«ã
ä»ä»¥ä¸åæå¯ä»¥çåºï¼æå±é¨åéæ¹å为éæåéåæ¯æ¹åäºä»çåå¨æ¹å¼ï¼å³æ¹åäºä»ççåæãæå ¨å±åéæ¹å为éæåéåæ¯æ¹åäºä»çä½ç¨åï¼éå¶äºä»ç使ç¨èå´ï¼å æ¤staticè¿ä¸ªè¯´æ符å¨ä¸åçå°æ¹èµ·çä½ç¨æ¯ä¸åçã
ä¸åç±»åçåéå¨å åä¸çä½ç½®ï¼
1ã å·²ç»åå§åçå ¨å±åéåæ¾ä¸dataæ°æ®æ®µï¼æªåå§åçå ¨å±åéåæ¾ä¸bssæ°æ®æ®µã
2ã éæçå ¨å±åéåæ¾ä¸dataæ°æ®æ®µ
3ã å±é¨åéåæ¾å¨æ ä¸ã
4ã éæå±é¨åéï¼å¹¶ä¸æ¯å¨è°ç¨å½æ°æ¶åé å½æ°è¿åæ¶éæ¾ï¼èæ¯åå ¨å±åéä¸æ ·éæåé ï¼åæ¾dataæ°æ®æ®µï¼ä½å®çä½ç¨åå¨å½æ°ä¸èµ·ä½ç¨ã
ä¸å¾æ¯å åä¸çç®è¦åå¸å¾ï¼å¯ä»¥æ´ç´è§çç解个类ååéå¨å åä¸çåæ¾ä½ç½®ï¼å¾1ã