C/C++ µÄÈ«¾Ö±äÁ¿³õʼ»¯Óë²»³õʼ»¯µÄÇø±ð
ÔÚCÓïÑÔÀȫ¾Ö±äÁ¿Èç¹û²»³õʼ»¯µÄ»°£¬Ä¬ÈÏΪ0£¬Ò²¾ÍÊÇ˵ÔÚÈ«¾Ö¿Õ¼äÀ
int x =0; ¸ú int x; µÄЧ¹û¿´ÆðÀ´ÊÇÒ»ÑùµÄ¡£µ«ÆäʵÕâÀïÃæµÄ²î±ðºÜ´ó£¬Ç¿ÁÒ½¨Òé´ó¼ÒËùÓеÄÈ«¾Ö±äÁ¿¶¼Òª³õʼ»¯£¬ËûÃǵÄÖ÷Òª²î±ðÈçÏ£º
±àÒëÆ÷ÔÚ±àÒëµÄʱºòÕë¶ÔÕâÁ½ÖÖÇé¿ö»á²úÉúÁ½ÖÖ·ûºÅ·ÅÔÚÄ¿±êÎļþµÄ·ûºÅ±íÖУ¬¶ÔÓÚ³õʼ»¯µÄ£¬½ÐÇ¿·ûºÅ£¬Î´³õʼ»¯µÄ£¬½ÐÈõ·ûºÅ¡£
Á¬½ÓÆ÷ÔÚÁ¬½ÓÄ¿±êÎļþµÄʱºò£¬Èç¹ûÓöµ½Á½¸öÖØÃû·ûºÅ£¬»áÓÐÒÔÏ´¦Àí¹æÔò£º
1¡¢Èç¹ûÓжà¸öÖØÃûµÄÇ¿·ûºÅ£¬Ôò±¨´í¡£
2¡¢Èç¹ûÓÐÒ»¸öÇ¿·ûºÅ£¬¶à¸öÈõ·ûºÅ£¬ÔòÒÔÇ¿·ûºÅΪ׼¡£
3¡¢Èç¹ûûÓÐÇ¿·ûºÅ£¬µ«Óжà¸öÖØÃûµÄÈõ·ûºÅ£¬ÔòÈÎѡһ¸öÈõ·ûºÅ¡£
»ùÓÚÒÔÉϹæÔò¿´ÏÂÃæµÄ³ÌÐò£º£¨±àÒëÆ÷Ϊgcc 3.4.6£¬ VCϽá¹û²»Ò»Ñù£©
main.cpp
int x;
void foo();
int main(int argc, char* argv[])
{
printf("x1:%d\n", x);
foo();
printf("x2:%d\n", x);
return 0;
}
var.cpp
int x;
void foo()
{
x = 2;
}
ÒòΪÁ½¸öÎļþÀïÃæµÄx¶¼±»³õʼ»¯ÁË£¬ËùÒÔ±àÒë³öÀ´µÄÁ½¸öÄ¿±êÎļþÀïx¶¼ÊÇÇ¿·ûºÅ£¬Á¬½ÓµÄʱºò»á±¨´í£º
multiple definition of `x'
·ûºÏ¹æÔò1¡£
°Ñvar.cppÀïÃæµÄint x = 0;¸Ä³É int x; ²»×ö³õʼ»¯£¬±àÒë¡¢Á¬½ÓÎÞÈκξ¯¸æ£¬ÔËÐнá¹ûΪ£º
x:1
x:2
˵Ã÷Á¬½ÓµÄʱºòÒÔmain.cppÖеÄxΪ׼£¬fooº¯ÊýÐ޸ĵÄÊÇmain.cppÖж¨ÒåµÄx¡£·ûºÏ¹æÔò2¡£
°Ñmain.cppÖеijõʼ»¯Ò²È¥µô£¬¸Ä³É int x; ±àÒë¡¢Á¬½ÓÈÔÈ»ºÜ˳Àû£¬ÔËÐнá¹ûΪ£º
x:1
x:2
˵Ã÷mainº¯ÊýºÍfooº¯ÊýÐ޸ĵÄÊÇͬһ¸öx£¬Á¬½ÓÆ÷×Ô¼ºÑ¡ÔñÁËÒ»¸öx£¬·ûºÏ¹æÔò3.
´ó²¿·ÖÇé¿öÏ£¬ÎÒÃDz»Ï£ÍûÁ¬½ÓÆ÷ΪÎÒÃÇ×ö¾ö¶¨£¬ËùÒÔÎÒ²»ÊǺÜÈÏͬºóÁ½¸ö¹æÔò£¬ÖÁÉÙÓ¦¸Ã¸ø¸ö¾¯¸æ£¬¶ø²»Ó¦¸Ã°²¾²µØÍ¨¹ý¡£
Ò²Ðíдvar.cppµÄÈ˸ù±¾²»ÖªµÀmain.cppÀïÃæÒ²ÓÐÒ»¸öxÄØ£¬fooº¯ÊýµÄ±¾ÒâÒ²Ðí²¢²»ÊÇÒªÐÞ¸Ämain.cppÖеÄx¡£ÒòΪÕâÖÖÎÊÌâÒýÆðµÄbug»áºÜÄѲ顣
ËùÒÔÎÒÃÇÒª¾¡Á¿°ÑÈ«¾Ö±äÁ¿³õʼ»¯£¬¶ÔÓÚ²»Ïë¸ø±ðµÄÎļþÒýÓõıäÁ¿£¬Ò²¾¡Á¿ÓÃstaticÐÞÊΡ£
³ýÁËÁ¬½ÓʱµÄ±íÏÖ²»Ò»ÑùÍ⣬Ϊ³õʼ»¯µÄ·ûºÅÔÚÄ¿±êÎļþµÄbss¶ÎÖУ¬¶ø³õʼ»¯µÄ·ûºÅÔÚdata¶ÎÖС£
Ïà¹ØÎĵµ£º
C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö
1.ÏÈÀ´½éÉÜËüµÄµÚÒ»ÌõÒ²ÊÇ×îÖØÒªµÄÒ»Ìõ£ºÒþ²Ø¡£
µ±ÎÒÃÇͬʱ±àÒë¶à¸öÎļþʱ£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ¡£ÎªÀí½âÕâ¾ä»°£¬ÎÒ¾ÙÀýÀ´ËµÃ÷¡£ÎÒÃÇҪͬʱ±àÒëÁ½¸öÔ´Îļþ£¬Ò»¸öÊÇa.c£¬ÁíÒ»¸öÊÇmain.c.
ÏÂÃæÊÇa.cµÄÄÚÈÝ£º
char a = 'A'; // global variable
void ......
ÍøÂí¼ÓÃÜÖУ¬Ä¿Ç°Óиöfunction(p,a,c,k,e,d)µÄ£¬·Ç³£ÌÖÑᣬÎÒÒ²ÊÇÉî¶ñÍ´¾ø£¬¼ÇµÃÎÒ¸Õ¿ªÊ¼Åöµ½ËüµÄʱºò£¬Æ´ÃüµØ¶Áº¯Êý£¬ÄǸö½ÐÍ´¿à°¡£¬¿Ä¿Ä°í°íµØÃãÇ¿¸ãÁ˳öÀ´¡£½ñÌ죬ͻȻ¿´¼ûÁËfunction(p,a,c,k,e,d)µÄ½âÃÜ´úÂ룬¸ßÐ˶¼À´²»¼°
<script>
a=62;
function encode() {
var code = document.getElementById('code' ......
#include <stdio.h>
#include <stdlib.h>
#define SIZE 17
void reverse(int start, int end);
int data[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
int main(void)
{
int i = 5;
reverse(0, i - 1);
reverse(i, SIZE-1);
reverse(0, SIZE-1);
return ......
c±ä³ÉµÄ¶ÔÏó´ó¶àÊǹ²ÏíÄÚ´æÖÐÉêÇ룬±È½ÏÉÙÓÃmallocÖ±½ÓÀ´ÉêÇ룬ËùÒÔÁ´±íÉè¼ÆÒ»°ãÊÇÏÂÃæ2Öнṹ£º
¶ÔÏó --> ¶ÔÏó --> ¶ÔÏó
¶ÔÏó -->Á´±í¶ÔÏó-->¶ÔÏó -->Á´±í¶ÔÏó
£¨1£©¶ÔÓÚµÚÒ»ÖÖ£¬Á´±íÖ±½Ó¹ØÁªµ½¶ÔÏó±¾Éí£¬ËùÒÔÈç¹ûÒ»¸ö¶ÔÏóÔÚÏûÍöʱ£¬Ã»Óм°Ê±ÇåÀíµôÁ´±í¹ØÏµ£¬Ôò»áµ¼ÖÂÁ´±íµôÁ´¡£
£¨2£©Á´±í¶ÔÏó±¾ÉíÊÇÒ» ......
ΪʲôÐèҪʹÓÃextern "C"ÄØ£¿C++Ö®¸¸ÔÚÉè¼ÆC++֮ʱ£¬¿¼Âǵ½µ±Ê±ÒѾ´æÔÚÁË´óÁ¿µÄC´úÂ룬ΪÁËÖ§³ÖÔÀ´µÄC´úÂëºÍÒѾдºÃC¿â£¬ÐèÒªÔÚC++Öо¡¿ÉÄܵÄÖ§³ÖC£¬¶øextern "C"¾ÍÊÇÆäÖеÄÒ»¸ö²ßÂÔ¡£
¡¡¡¡ÊÔÏëÕâÑùµÄÇé¿ö:Ò»¸ö¿âÎļþÒѾÓÃCдºÃÁ˶øÇÒÔËÐеúÜÁ¼ºÃ£¬Õâ¸öʱºòÎÒÃÇÐèҪʹÓÃÕâ¸ö¿âÎļþ£ ......