staticÏê½â£¨c/c++£©
C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö
Ò».ÔÚCÓïÑÔÖУ¬staticµÄ×ÖÃæÒâ˼ºÜÈÝÒ×°ÑÎÒÃǵ¼ÈëÆç;£¬ÆäʵËüµÄ×÷ÓÃÓÐÈýÌõ¡£
£¨1£©ÏÈÀ´½éÉÜËüµÄµÚÒ»ÌõÒ²ÊÇ×îÖØÒªµÄÒ»Ìõ£ºÒþ²Ø¡£
µ±ÎÒÃÇͬʱ±àÒë¶à¸öÎļþʱ£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ¡£ÎªÀí½âÕâ¾ä»°£¬ÎÒ¾ÙÀýÀ´ËµÃ÷¡£ÎÒÃÇҪͬʱ±àÒëÁ½¸öÔ´Îļþ£¬Ò»¸öÊÇa.c£¬ÁíÒ»¸öÊÇmain.c¡£
ÏÂÃæÊÇa.cµÄÄÚÈÝ
char a = 'A'; // global variable
void msg()
{
printf("Hello\n");
}
ÏÂÃæÊÇmain.cµÄÄÚÈÝ
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}
³ÌÐòµÄÔËÐнá¹ûÊÇ£º
A Hello
Äã¿ÉÄÜ»áÎÊ£ºÎªÊ²Ã´ÔÚa.cÖж¨ÒåµÄÈ«¾Ö±äÁ¿aºÍº¯ÊýmsgÄÜÔÚmain.cÖÐʹÓã¿Ç°ÃæËµ¹ý£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ£¬ÆäËüµÄÔ´ÎļþÒ²ÄÜ·ÃÎÊ¡£´ËÀýÖУ¬aÊÇÈ«¾Ö±äÁ¿£¬msgÊǺ¯Êý£¬²¢ÇÒ¶¼Ã»ÓмÓstaticǰ׺£¬Òò´Ë¶ÔÓÚÁíÍâµÄÔ´Îļþmain.cÊǿɼûµÄ¡£
Èç¹û¼ÓÁËstatic£¬¾Í»á¶ÔÆäËüÔ´ÎļþÒþ²Ø¡£ÀýÈçÔÚaºÍmsgµÄ¶¨Òåǰ¼ÓÉÏstatic£¬main.c¾Í¿´²»µ½ËüÃÇÁË¡£ÀûÓÃÕâÒ»ÌØÐÔ¿ÉÒÔÔÚ²»Í¬µÄÎļþÖж¨ÒåͬÃûº¯ÊýºÍͬÃû±äÁ¿£¬¶ø²»±Øµ£ÐÄÃüÃû³åÍ»¡£Static¿ÉÒÔÓÃ×÷º¯ÊýºÍ±äÁ¿µÄǰ׺£¬¶ÔÓÚº¯ÊýÀ´½²£¬staticµÄ×÷ÓýöÏÞÓÚÒþ²Ø£¬¶ø¶ÔÓÚ±äÁ¿£¬static»¹ÓÐÏÂÃæÁ½¸ö×÷Óá£
£¨2£©staticµÄµÚ¶þ¸ö×÷ÓÃÊDZ£³Ö±äÁ¿ÄÚÈݵij־ᣴ洢ÔÚ¾²Ì¬Êý¾ÝÇøµÄ±äÁ¿»áÔÚ³ÌÐò¸Õ¿ªÊ¼ÔËÐÐʱ¾ÍÍê³É³õʼ»¯£¬Ò²ÊÇΨһµÄÒ»´Î³õʼ»¯¡£¹²ÓÐÁ½ÖÖ±äÁ¿´æ´¢ÔÚ¾²Ì¬´æ´¢Çø£ºÈ«¾Ö±äÁ¿ºÍstatic±äÁ¿£¬Ö»²»¹ýºÍÈ«¾Ö±äÁ¿±ÈÆðÀ´£¬static¿ÉÒÔ¿ØÖƱäÁ¿µÄ¿É¼û·¶Î§£¬Ëµµ½µ×static»¹ÊÇÓÃÀ´Òþ²ØµÄ¡£ËäÈ»ÕâÖÖÓ÷¨²»³£¼û£¬µ«ÎÒ»¹ÊǾÙÒ»¸öÀý×Ó¡£
££i nclude <stdio.h>
int fun(void){
static int count = 10; //ÊÂʵÉϴ˸³ÖµÓï¾ä´ÓÀ´Ã»ÓÐÖ´Ðйý
return count--;
}
int count = 1;
int main(void)
{
printf("global\t\tlocal static\n");
for(; count <= 10; ++count)
printf("%d\t\t%d\n", count, fun());
return 0;
}
³ÌÐòµÄÔËÐнá¹ûÊÇ£º
global local static
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1
£¨3£©staticµÄµÚÈý¸ö×÷ÓÃÊÇĬÈϳõʼ»¯Îª0¡£Æäʵȫ¾Ö±äÁ¿Ò²¾ß±¸ÕâÒ»ÊôÐÔ£¬ÒòΪȫ¾Ö±äÁ¿Ò²´æ´¢ÔÚ¾²Ì¬Êý¾ÝÇø¡£ÔÚ¾²Ì¬Êý¾ÝÇø£¬ÄÚ´æÖÐËùÓеÄ×Ö½ÚĬÈÏÖµ¶¼ÊÇ0x00£¬Ä³Ð©Ê±ºòÕâÒ»ÌØµã¿ÉÒÔ¼õÉÙ³ÌÐòÔ±µÄ¹¤×÷Á¿¡£±ÈÈç³õʼ»¯Ò»¸öÏ¡Êè¾ØÕó£¬ÎÒÃÇ¿ÉÒÔÒ»¸öÒ»¸öµØ°ÑËùÓÐÔªË
Ïà¹ØÎĵµ£º
Keil CÀïÓõ½ÁËunsigned long³¤ÕûÐͱäÁ¿£¬±àÒëʱ¶¼ÄÜͨ¹ý£¬µ«ÔËÐÐʱÀÏÊÇÒç³ö£¬Í¬»ï°Ù¶Èµ½ÁË´ËÌù£¬½â¾öÁËÎÊÌ⣬ÓÚÊÇתÌûÓÚ´Ë£º
½ñÌìµ÷ÊÔÒ»¸ö³Ë·¨£¬³öÁ˵ãÎÊÌ⣬ÏÈ¿´´úÂëʾÒ⣺
void test(void)
{
unsigned long mid1,mid2,mid3;
mid1 ......
À¼´óÂÛ̳ÉϵÄÒ»¸öÌû×Ó¡«¡«
ѧ¶«Î÷£¬ÍùÍùʵÀý²ÅÊÇ×îÈÃÈ˸ÐÐËȤµÄ£¬ÀÏÊÇѧ»ù´¡ÀíÂÛ£¬²»¶¯ÊÖ£¬¸Ð¾õûÓгɾ͸У¬ºÇºÇ¡£
ÏÂÃæÏÈÀ´Ò»¸öʵÀý¡£ÎÒÃÇͨ¹ý´´½¨Á½¸öÏß³ÌÀ´ÊµÏÖ¶ÔÒ»¸öÊýµÄµÝ¼Ó¡£
»òÐíÕâ¸öʵÀýûÓÐʵ¼ÊÔËÓõļÛÖµ£¬µ«ÊÇÉÔ΢¸Ä¶¯Ò»Ï£¬ÎÒÃǾͿÉÒÔÓõ½ÆäËûµØ·½È¥À¡£
ÏÂÃæÊÇÎÒÃǵĴúÂ룺
/*thread_example.c : c ......
QT
http://www.trolltech.com
http://www.qiliang.net/qt.html
QtÊÇTrolltech¹«Ë¾µÄÒ»¸ö¶àƽ̨µÄC++ͼÐÎÓû§½çÃæÓ¦ÓóÌÐò¿ò¼Ü¡£ËüÌṩ¸øÓ¦ÓóÌÐò¿ª·¢Õß½¨Á¢ÒÕÊõ¼¶µÄͼÐÎÓû§½çÃæËùÐèµÄËùÓù¦ÄÜ¡£QtÊÇÍêÈ«ÃæÏò¶ÔÏóµÄºÜÈÝÒ×À©Õ¹£¬²¢ÇÒÔÊÐíÕæÕýµØ×é¼þ±à³Ì¡£×Ô´Ó1996ÄêÔçЩʱºò£¬Qt½øÈëÉÌÒµÁìÓò£¬ËüÒѾ³ÉΪȫÊÀ½ç·¶ ......
1)ÔËÐÐʱ¿â¾ÍÊÇ C run-time library£¬ÊÇ C ¶ø·Ç C++ ÓïÑÔÊÀ½çµÄ¸ÅÄî:È¡Õâ¸öÃû×Ö¾ÍÊÇÒòΪÄãµÄ C ³ÌÐòÔËÐÐʱÐèÒªÕâЩ¿âÖеĺ¯Êý.
2)C ÓïÑÔÊÇËùνµÄ“СÄں˔ÓïÑÔ£¬¾ÍÆäÓïÑÔ±¾ÉíÀ´ËµºÜС£¨²»¶àµÄ¹Ø¼ü×Ö£¬³ÌÐòÁ÷³Ì¿ØÖÆ£¬Êý¾ÝÀàÐ͵ȣ©£»ËùÒÔ£¬C ÓïÑÔÄں˿ª·¢³öÀ´Ö®ºó£¬Dennis Ritchie ºÍ Brian Kernighan ¾ÍÓà C ±¾É ......
1.ÇóÏÂÃæº¯ÊýµÄ·µ»ØÖµ£¨Î¢Èí£©
¡¡¡¡int func(x)
¡¡¡¡{
¡¡¡¡int countx = 0;
¡¡¡¡while(x)
¡¡¡¡{
¡¡¡¡countx ++;
¡¡¡¡x = x&(x-1);
¡¡¡¡}
¡¡¡¡return countx;
¡¡¡¡}
¡¡¡¡¼Ù¶¨x = 9999¡£ ´ð°¸£º8
¡¡¡¡Ë¼Â·£º½«xת»¯Îª2½øÖÆ£¬¿´º¬ÓеÄ1µÄ¸öÊý¡£
¡¡¡¡2. ʲôÊÇ“ÒýÓÔ£¿ÉêÃ÷ºÍʹÓÓÒýÓ ......