如题所述
å享ä¸äºåµå ¥å¼é¢è¯ä¸ç常è§é®é¢ï¼å¸æè¿äºå¹²è´§å¯¹å¤§å®¶é¢è¯ææ帮å©ãè¯ä¸å¤æ°ç´æ¥çé¢ï¼
ä¸.å±é¨åéè½å¦åå ¨å±åééåï¼
çï¼è½ï¼å±é¨ä¼å±è½å ¨å±ã
å±é¨åéå¯ä»¥ä¸å ¨å±åéååï¼å¨å½æ°å å¼ç¨è¿ä¸ªåéæ¶ï¼ä¼ç¨å°ååçå±é¨åéï¼èä¸ä¼ç¨å°å ¨å±åéã
对äºæäºç¼è¯å¨èè¨ï¼å¨åä¸ä¸ªå½æ°å å¯ä»¥å®ä¹å¤ä¸ªååçå±é¨åéï¼æ¯å¦å¨ä¸¤ä¸ªå¾ªç¯ä½å é½å®ä¹ä¸ä¸ªååçå±é¨åéï¼èé£ä¸ªå±é¨åéçä½ç¨åå°±å¨é£ä¸ªå¾ªç¯ä½å ã
äº.åµå ¥å¼ç³»ç»ä¸ç»å¸¸è¦ç¨å°æ é循ç¯ï¼å¦ä½ç¨Cç¼åæ»å¾ªç¯
çï¼while(1){}æè for(;;)
ä¸.å ³é®åstaticçä½ç¨æ¯ä»ä¹ï¼
çï¼å¨Cè¯è¨ä¸ï¼å ³é®åstaticæä¸ä¸ªææ¾çä½ç¨ï¼
1) å¨å½æ°ä½ï¼ä¸ä¸ªè¢«å£°æ为éæçåéå¨è¿ä¸å½æ°è¢«è°ç¨è¿ç¨ä¸ç»´æå ¶å¼ä¸åã
2) å¨æ¨¡åå ï¼ä½å¨å½æ°ä½å¤ï¼ï¼ä¸ä¸ªè¢«å£°æ为éæçåéå¯ä»¥è¢«æ¨¡åå æç¨å½æ°è®¿é®ï¼ä½ä¸è½è¢«æ¨¡åå¤å ¶å®å½æ°è®¿é®ãå®æ¯ä¸ä¸ªæ¬å°çå ¨å±åéã
3) å¨æ¨¡åå ï¼ä¸ä¸ªè¢«å£°æ为éæçå½æ°åªå¯è¢«è¿ä¸æ¨¡åå çå ¶å®å½æ°è°ç¨ãé£å°±æ¯ï¼è¿ä¸ªå½æ°è¢«éå¶å¨å£°æå®ç模åçæ¬å°èå´å 使ç¨ã
å.staticå ¨å±åéä¸æ®éçå ¨å±åéæä»ä¹åºå«ï¼staticå½æ°ä¸æ®éå½æ°æä»ä¹åºå«ï¼
çï¼å ¨å±åé(å¤é¨åé)ç说æä¹ååå 以static å°±ææäºéæçå ¨å±åéã
å ¨å±åéæ¬èº«å°±æ¯éæåå¨æ¹å¼ï¼éæå ¨å±åéå½ç¶ä¹æ¯éæåå¨æ¹å¼ãè¿ä¸¤è å¨åå¨æ¹å¼ä¸å¹¶æ ä¸åã
è¿ä¸¤è çåºå«è½å¨äºééæå ¨å±åéçä½ç¨åæ¯æ´ä¸ªæºç¨åºï¼ å½ä¸ä¸ªæºç¨åºç±å¤ä¸ªæºæ件ç»ææ¶ï¼ééæçå ¨å±åéå¨å个æºæ件ä¸é½æ¯ææçãèéæå ¨å±åéåéå¶äºå ¶ä½ç¨åï¼å³åªå¨å®ä¹è¯¥åéçæºæ件å ææï¼ å¨åä¸æºç¨åºçå ¶å®æºæ件ä¸ä¸è½ä½¿ç¨å®ã
ç±äºéæå ¨å±åéçä½ç¨åå±éäºä¸ä¸ªæºæ件å ï¼åªè½ä¸ºè¯¥æºæ件å çå½æ°å ¬ç¨ï¼å æ¤å¯ä»¥é¿å å¨å ¶å®æºæ件ä¸å¼èµ·é误ã
ä»ä»¥ä¸åæå¯ä»¥çåºï¼æå±é¨åéæ¹å为éæåéåæ¯æ¹åäºå®çåå¨æ¹å¼å³æ¹åäºå®ççåæãæå ¨å±åéæ¹å为éæåéåæ¯æ¹åäºå®çä½ç¨åï¼éå¶äºå®ç使ç¨èå´ã
staticå½æ°ä¸æ®éå½æ°ä½ç¨åä¸åãä» å¨æ¬æ件ãåªå¨å½åæºæ件ä¸ä½¿ç¨çå½æ°åºè¯¥è¯´æ为å é¨å½æ°(static)ï¼å é¨å½æ°åºè¯¥å¨å½åæºæ件ä¸è¯´æåå®ä¹ã
对äºå¯å¨å½åæºæ件以å¤ä½¿ç¨çå½æ°ï¼åºè¯¥å¨ä¸ä¸ªå¤´æ件ä¸è¯´æï¼è¦ä½¿ç¨è¿äºå½æ°çæºæ件è¦å å«è¿ä¸ªå¤´æ件ã
äº.è¿ç¨ä¹é´éä¿¡çéå¾æåªäºï¼
çï¼è¿ç¨é´é信主è¦éè¿ç®¡éãæ¶æ¯ãä¿¡å·çéå¾è¿è¡ã
1ãæ å管é( pipe )ï¼ç®¡éæ¯ä¸ç§ååå·¥çéä¿¡æ¹å¼ï¼æ°æ®åªè½ååæµå¨ï¼èä¸åªè½å¨å ·æ亲ç¼å ³ç³»çè¿ç¨é´ä½¿ç¨ãè¿ç¨ç亲ç¼å ³ç³»é常æ¯æç¶åè¿ç¨å ³ç³»ã
2ãé«çº§ç®¡é(popen)ï¼å°å¦ä¸ä¸ªç¨åºå½åä¸ä¸ªæ°çè¿ç¨å¨å½åç¨åºè¿ç¨ä¸å¯å¨ï¼åå®ç®æ¯å½åç¨åºçåè¿ç¨ï¼è¿ç§æ¹å¼æ们æ为é«çº§ç®¡éæ¹å¼ã
3ãæå管é (named pipe) ï¼æå管éä¹æ¯ååå·¥çéä¿¡æ¹å¼ï¼ä½æ¯å®å 许æ 亲ç¼å ³ç³»è¿ç¨é´çéä¿¡ã
4ãæ¶æ¯éå( message queue ) ï¼æ¶æ¯éåæ¯ç±æ¶æ¯çé¾è¡¨ï¼åæ¾å¨å æ ¸ä¸å¹¶ç±æ¶æ¯éåæ è¯ç¬¦æ è¯ãæ¶æ¯éåå æäºä¿¡å·ä¼ éä¿¡æ¯å°ã管éåªè½æ¿è½½æ æ ¼å¼åèæµä»¥åç¼å²åºå¤§å°åéç缺ç¹ã
5ãä¿¡å·é( semophore ) ï¼ä¿¡å·éæ¯ä¸ä¸ªè®¡æ°å¨ï¼å¯ä»¥ç¨æ¥æ§å¶å¤ä¸ªè¿ç¨å¯¹å ±äº«èµæºç访é®ãå®å¸¸ä½ä¸ºä¸ç§éæºå¶ï¼é²æ¢æè¿ç¨æ£å¨è®¿é®å ±äº«èµæºæ¶ï¼å ¶ä»è¿ç¨ä¹è®¿é®è¯¥èµæºãå æ¤ï¼ä¸»è¦ä½ä¸ºè¿ç¨é´ä»¥ååä¸è¿ç¨å ä¸å线ç¨ä¹é´çåæ¥æ段ã
6ãä¿¡å· ( sinal ) ï¼ä¿¡å·æ¯ä¸ç§æ¯è¾å¤æçéä¿¡æ¹å¼ï¼ç¨äºéç¥æ¥æ¶è¿ç¨æ个äºä»¶å·²ç»åçã
7ãå ±äº«å å( shared memory ) ï¼å ±äº«å åå°±æ¯æ å°ä¸æ®µè½è¢«å ¶ä»è¿ç¨æ访é®çå åï¼è¿æ®µå ±äº«å åç±ä¸ä¸ªè¿ç¨å建ï¼ä½å¤ä¸ªè¿ç¨é½å¯ä»¥è®¿é®ãå ±äº«å åæ¯æå¿«ç IPC æ¹å¼ï¼å®æ¯éå¯¹å ¶ä»è¿ç¨é´éä¿¡æ¹å¼è¿è¡æçä½èä¸é¨è®¾è®¡çãå®å¾å¾ä¸å ¶ä»éä¿¡æºå¶ï¼å¦ä¿¡å·ä¸¤ï¼é å使ç¨ï¼æ¥å®ç°è¿ç¨é´çåæ¥åéä¿¡ã
8ãå¥æ¥å( socket ) ï¼å¥è§£å£ä¹æ¯ä¸ç§è¿ç¨é´éä¿¡æºå¶ï¼ä¸å ¶ä»éä¿¡æºå¶ä¸åçæ¯ï¼å®å¯ç¨äºä¸åæºå¨é´çè¿ç¨éä¿¡ã
å .æ»éç4ä¸ªå¿ è¦æ¡ä»¶
çï¼
1ãäºæ¥ï¼æç§èµæºä¸æ¬¡åªå 许ä¸ä¸ªè¿ç¨è®¿é®ï¼å³è¯¥èµæºä¸æ¦åé ç»æ个è¿ç¨ï¼å ¶ä»è¿ç¨å°±ä¸è½å访é®ï¼ç´å°è¯¥è¿ç¨è®¿é®ç»æã
2ãå æä¸çå¾ ï¼ä¸ä¸ªè¿ç¨æ¬èº«å æèµæºï¼ä¸ç§æå¤ç§ï¼ï¼åæ¶è¿æèµæºæªå¾å°æ»¡è¶³ï¼æ£å¨çå¾ å ¶ä»è¿ç¨éæ¾è¯¥èµæºã
3ãä¸å¯æ¢å ï¼å«äººå·²ç»å æäºæ项èµæºï¼ä½ ä¸è½å 为èªå·±ä¹éè¦è¯¥èµæºï¼å°±å»æå«äººçèµæºæ¢è¿æ¥ã
4ã循ç¯çå¾ ï¼åå¨ä¸ä¸ªè¿ç¨é¾ï¼ä½¿å¾æ¯ä¸ªè¿ç¨é½å æä¸ä¸ä¸ªè¿ç¨æéçè³å°ä¸ç§èµæºã
å½ä»¥ä¸å个æ¡ä»¶å满足ï¼å¿ ç¶ä¼é ææ»éï¼åçæ»éçè¿ç¨æ æ³è¿è¡ä¸å»ï¼å®ä»¬æææçèµæºä¹æ æ³éæ¾ãè¿æ ·ä¼å¯¼è´CPUçååéä¸éãæ以æ»éæ åµæ¯ä¼æµªè´¹ç³»ç»èµæºåå½±å计ç®æºç使ç¨æ§è½çãé£ä¹ï¼è§£å³æ»éé®é¢å°±æ¯ç¸å½æå¿ è¦çäºã
ä¸.æ»éçå¤çæ¹å¼æåªäºï¼
çï¼æ»éçå¤çæ¹å¼ä¸»è¦ä»é¢é²æ»éãé¿å æ»éãæ£æµä¸è§£é¤æ»éè¿å个æ¹é¢æ¥è¿è¡å¤çã
é¢é²æ»éï¼
1ãèµæºä¸æ¬¡æ§åé ï¼ï¼ç ´å请æ±åä¿ææ¡ä»¶ï¼
2ãå¯å¥å¤ºèµæºï¼å³å½æè¿ç¨æ°çèµæºæªæ»¡è¶³æ¶ï¼éæ¾å·²å æçèµæºï¼ç ´åä¸å¯å¥å¤ºæ¡ä»¶ï¼
3ãèµæºæåºåé æ³ï¼ç³»ç»ç»æ¯ç±»èµæºèµäºä¸ä¸ªç¼å·ï¼æ¯ä¸ä¸ªè¿ç¨æç¼å·éå¢ç顺åºè¯·æ±èµæºï¼éæ¾åç¸åï¼ç ´åç¯è·¯çå¾ æ¡ä»¶ï¼
é¿å æ»é:
é¢é²æ»éçå ç§çç¥ï¼ä¼ä¸¥éå°æ害系ç»æ§è½ãå æ¤å¨é¿å æ»éæ¶ï¼è¦æ½å è¾å¼±çéå¶ï¼ä»èè·å¾ è¾æ»¡æçç³»ç»æ§è½ãç±äºå¨é¿å æ»éççç¥ä¸ï¼å 许è¿ç¨å¨æå°ç³è¯·èµæºãå èï¼ç³»ç»å¨è¿è¡èµæºåé ä¹åé¢å 计ç®èµæºåé çå®å ¨æ§ãè¥æ¤æ¬¡åé ä¸ä¼å¯¼è´ç³»ç»è¿å ¥ä¸å®å ¨ç¶æï¼åå°èµæºåé ç»è¿ç¨ï¼å¦åï¼è¿ç¨çå¾ ãå ¶ä¸æå ·æ代表æ§çé¿å æ»éç®æ³æ¯é¶è¡å®¶ç®æ³ã
æ£æµæ»éï¼
é¦å 为æ¯ä¸ªè¿ç¨åæ¯ä¸ªèµæºæå®ä¸ä¸ªå¯ä¸çå·ç ï¼
ç¶å建ç«èµæºåé 表åè¿ç¨çå¾ è¡¨
解é¤æ»éï¼
å½åç°æè¿ç¨æ»éåï¼ä¾¿åºç«å³æå®ä»æ»éç¶æä¸è§£è±åºæ¥ï¼å¸¸éç¨çæ¹æ³æï¼
1ãå¥å¤ºèµæºï¼ä»å ¶å®è¿ç¨å¥å¤ºè¶³å¤æ°éçèµæºç»æ»éè¿ç¨ï¼ä»¥è§£é¤æ»éç¶æï¼
2ãæ¤æ¶è¿ç¨ï¼å¯ä»¥ç´æ¥æ¤æ¶æ»éè¿ç¨ææ¤æ¶ä»£ä»·æå°çè¿ç¨ï¼ç´è³æ足å¤çèµæºå¯ç¨ï¼æ»éç¶æ.æ¶é¤ä¸ºæ¢ï¼æè°ä»£ä»·æ¯æä¼å 级ãè¿è¡ä»£ä»·ãè¿ç¨çéè¦æ§åä»·å¼çã
å «.è¿ç¨å线ç¨æä»ä¹åºå«ï¼
çï¼è¿ç¨æ¯å¹¶åæ§è¡çç¨åºå¨æ§è¡è¿ç¨ä¸åé å管çèµæºçåºæ¬åä½ã线ç¨æ¯è¿ç¨çä¸ä¸ªæ§è¡åå ï¼æ¯æ¯è¿ç¨è¿è¦å°çç¬ç«è¿è¡çåºæ¬åä½ãä¸ä¸ªç¨åºè³å°æä¸ä¸ªè¿ç¨ï¼ä¸ä¸ªè¿ç¨è³å°æä¸ä¸ªçº¿ç¨ã两è çåºå«ä¸»è¦æ以ä¸å 个æ¹é¢ï¼
1. è¿ç¨æ¯èµæºåé çæå°åä½ã
2. 线ç¨æ¯ç¨åºæ§è¡çæå°åä½ï¼ä¹æ¯å¤çå¨è°åº¦çåºæ¬åä½ï¼ä½è¿ç¨ä¸æ¯ï¼ä¸¤è åå¯å¹¶åæ§è¡ã
3. è¿ç¨æèªå·±çç¬ç«å°å空é´ï¼æ¯å¯å¨ä¸ä¸ªè¿ç¨ï¼ç³»ç»å°±ä¼ä¸ºå®åé å°å空é´ï¼å»ºç«æ°æ®è¡¨æ¥ç»´æ¤ä»£ç 段ãå æ 段åæ°æ®æ®µï¼è¿ç§æä½é常æè´µãè线ç¨æ¯å ±äº«è¿ç¨ä¸çæ°æ®ï¼ä½¿ç¨ç¸åçå°å空é´ï¼å æ¤ï¼CPUåæ¢ä¸ä¸ªçº¿ç¨çè±è´¹è¿æ¯è¿ç¨å°å¾å¤ï¼åæ¶å建ä¸ä¸ªçº¿ç¨çå¼éä¹æ¯è¿ç¨å°å¾å¤ã
4. 线ç¨ä¹é´çéä¿¡æ´æ¹ä¾¿ï¼åä¸è¿ç¨ä¸ç线ç¨å ±äº«å ¨å±åéãéæåéçæ°æ®ï¼èè¿ç¨ä¹é´çéä¿¡éè¦ä»¥éä¿¡çæ¹å¼ï¼IPC)è¿è¡ãä¸è¿å¦ä½å¤ç好åæ¥ä¸äºæ¥æ¯ç¼åå¤çº¿ç¨ç¨åºçé¾ç¹ãä½æ¯å¤è¿ç¨ç¨åºæ´å¥å£®ï¼å¤çº¿ç¨ç¨åºåªè¦æä¸ä¸ªçº¿ç¨æ»æï¼æ´ä¸ªè¿ç¨ä¹è·çæ»æäºï¼èä¸ä¸ªè¿ç¨æ»æ并ä¸ä¼å¯¹å¦å¤ä¸ä¸ªè¿ç¨é æå½±åï¼å 为è¿ç¨æèªå·±ç¬ç«çå°å空é´ã
5. è¿ç¨åæ¢æ¶ï¼æ¶èçèµæºå¤§ï¼æçä½ãæ以æ¶åå°é¢ç¹çåæ¢æ¶ï¼ä½¿ç¨çº¿ç¨è¦å¥½äºè¿ç¨ãåæ ·å¦æè¦æ±åæ¶è¿è¡å¹¶ä¸åè¦å ±äº«æäºåéç并åæä½ï¼åªè½ç¨çº¿ç¨ä¸è½ç¨è¿ç¨ã
6. æ§è¡è¿ç¨ï¼æ¯ä¸ªç¬ç«çè¿ç¨æä¸ä¸ªç¨åºè¿è¡çå ¥å£ã顺åºæ§è¡åºååç¨åºå ¥å£ãä½æ¯çº¿ç¨ä¸è½ç¬ç«æ§è¡ï¼å¿ é¡»ä¾åå¨åºç¨ç¨åºä¸ï¼ç±åºç¨ç¨åºæä¾å¤ä¸ªçº¿ç¨æ§è¡æ§å¶ã
ä¼ç¼ºç¹ï¼
线ç¨æ§è¡å¼éå°ï¼ä½æ¯ä¸å©äºèµæºç管çåä¿æ¤ã线ç¨éåå¨SMPæºå¨ï¼åCPUç³»ç»ï¼ä¸è¿è¡ã
è¿ç¨æ§è¡å¼é大ï¼ä½æ¯è½å¤å¾å¥½çè¿è¡èµæºç®¡çåä¿æ¤ï¼å¯ä»¥è·¨æºå¨è¿ç§»ã
ä½æ¶ä½¿ç¨å¤è¿ç¨ï¼ä½æ¶ä½¿ç¨å¤çº¿ç¨ï¼
对èµæºç管çåä¿æ¤è¦æ±é«ï¼ä¸éå¶å¼éåæçæ¶ï¼ä½¿ç¨å¤è¿ç¨ã
è¦æ±æçé«ï¼é¢ç¹åæ¢æ¶ï¼èµæºçä¿æ¤ç®¡çè¦æ±ä¸æ¯å¾é«æ¶ï¼ä½¿ç¨å¤çº¿ç¨ã
ä¹. 线ç¨æ¯å¦å ·æç¸åçå æ ?
çï¼çæ£çç¨åºæ§è¡é½æ¯çº¿ç¨æ¥å®æçï¼ç¨åºå¯å¨çæ¶åæä½ç³»ç»å°±å¸®ä½ å建äºä¸ä¸ªä¸»çº¿ç¨ã
æ¯ä¸ªçº¿ç¨æèªå·±çå æ ã
嵌入式面试常见问题
这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。如下是我给大家整理的嵌入式面试常见问题,希望对大家有所作用。
1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4) 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。
2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
这个测试是为下面的目的而设的:
1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2) 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3) 懂得在宏中小心地把参数用括号括起来
4) 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?
least = MIN(*p++, b);
3. 预处理器标识#error的目的是什么?
如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。
死循环(Infinite loops)
4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
这个问题用几个解决方案。我首选的方案是:
while(1){}
一些程序员更喜欢如下方案:
for(;;)
{}
这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,我将用这个作为一个机会去探究他们这样做的'基本原理。如果他们的基本答案是:"我被教着这样做,但从没有想到过为什么。"这会给我留下一个坏印象。
第三个方案是用 goto
Loop:
...
goto Loop;
应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的BASIC/FORTRAN程序员。
数据声明(Data declarations)
5. 用变量a给出下面的定义
a) 一个整型数(An integer)
b)一个指向整型数的指针( A pointer to an integer)
c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer)
d)一个有10个整型数的数组( An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer
人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这种说法。当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。因为在被面试的这段时间里,我确定我知道这个问题的答案。应试者如果不知道所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果该面试者没有为这次面试做准备,那么他又能为什么出准备呢?
Static
6. 关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部
;