[{"data":1,"prerenderedAt":783},["ShallowReactive",2],{"wiki-page-/wiki/2023-10-05-cplusplus-jiao-xue/ch2-cheng-xu-yun-xing-yu-bian-liang-sheng-ming-zhou-qi":3,"wiki-doc-items-/wiki/2023-10-05-cplusplus-jiao-xue/ch2-cheng-xu-yun-xing-yu-bian-liang-sheng-ming-zhou-qi":723},{"id":4,"title":5,"body":6,"chapter":709,"chapterSort":710,"date":711,"description":22,"docKey":712,"docRoot":713,"docTitle":714,"extension":715,"isWikiDoc":72,"isWikiIndex":716,"layout":717,"meta":718,"navigation":72,"path":719,"seo":720,"stem":721,"wikiDepth":58,"__hash__":722},"content/wiki/2023-10-05-Cplusplus教学/ch2-程序运行与变量生命周期.md","程序运行与变量生命周期",{"type":7,"value":8,"toc":704},"minimark",[9,13,17,24,27,45,332,345,504,507,668,671,674,700],[10,11,12],"h3",{"id":12},"代码运行思路",[14,15,16],"p",{},"从main函数开始，代码是一行一行运行的。（一个工程里有且只有一个main函数）",[14,18,19],{},[20,21],"img",{"alt":22,"src":23},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/10/05/image1.webp",[10,25,26],{"id":26},"生命周期",[28,29,30],"ol",{},[31,32,33,37],"li",{},[34,35,36],"strong",{},"局部变量：",[28,38,39,42],{},[31,40,41],{},"位置：在某个函数或块的内部声明的变量称为局部变量。",[31,43,44],{},"作用域：它们只能被该函数或该代码块内部的语句使用。局部变量在函数外部是不可知的。",[46,47,51],"pre",{"className":48,"code":49,"language":50,"meta":22,"style":22},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Cstdio.h>\n\n int add(int a,int b);\n\nint main ()\n{\n  /* 局部变量声明 */\n  int a, b;\n  int c;\n\n  /* 实际初始化 */\n  a = 10;\n  b = 20;\n  c = add(a,b);\n\n  printf (\"value of a = %d, b = %d and c = %d\\n\", a, b, c);\n\n  return 0;\n}\n\nint add(int x,int y)\n{\n    int z = x + y;\n    return z;\n}\n","cpp",[52,53,54,67,74,106,111,122,128,135,144,152,157,163,179,192,205,210,242,247,258,264,269,293,298,318,327],"code",{"__ignoreMap":22},[55,56,59,63],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"szBVR","#include",[55,64,66],{"class":65},"sZZnC"," \u003Cstdio.h>\n",[55,68,70],{"class":57,"line":69},2,[55,71,73],{"emptyLinePlaceholder":72},true,"\n",[55,75,77,80,84,88,91,95,98,100,103],{"class":57,"line":76},3,[55,78,79],{"class":61}," int",[55,81,83],{"class":82},"sScJk"," add",[55,85,87],{"class":86},"sVt8B","(",[55,89,90],{"class":61},"int",[55,92,94],{"class":93},"s4XuR"," a",[55,96,97],{"class":86},",",[55,99,90],{"class":61},[55,101,102],{"class":93}," b",[55,104,105],{"class":86},");\n",[55,107,109],{"class":57,"line":108},4,[55,110,73],{"emptyLinePlaceholder":72},[55,112,114,116,119],{"class":57,"line":113},5,[55,115,90],{"class":61},[55,117,118],{"class":82}," main",[55,120,121],{"class":86}," ()\n",[55,123,125],{"class":57,"line":124},6,[55,126,127],{"class":86},"{\n",[55,129,131],{"class":57,"line":130},7,[55,132,134],{"class":133},"sJ8bj","  /* 局部变量声明 */\n",[55,136,138,141],{"class":57,"line":137},8,[55,139,140],{"class":61},"  int",[55,142,143],{"class":86}," a, b;\n",[55,145,147,149],{"class":57,"line":146},9,[55,148,140],{"class":61},[55,150,151],{"class":86}," c;\n",[55,153,155],{"class":57,"line":154},10,[55,156,73],{"emptyLinePlaceholder":72},[55,158,160],{"class":57,"line":159},11,[55,161,162],{"class":133},"  /* 实际初始化 */\n",[55,164,166,169,172,176],{"class":57,"line":165},12,[55,167,168],{"class":86},"  a ",[55,170,171],{"class":61},"=",[55,173,175],{"class":174},"sj4cs"," 10",[55,177,178],{"class":86},";\n",[55,180,182,185,187,190],{"class":57,"line":181},13,[55,183,184],{"class":86},"  b ",[55,186,171],{"class":61},[55,188,189],{"class":174}," 20",[55,191,178],{"class":86},[55,193,195,198,200,202],{"class":57,"line":194},14,[55,196,197],{"class":86},"  c ",[55,199,171],{"class":61},[55,201,83],{"class":82},[55,203,204],{"class":86},"(a,b);\n",[55,206,208],{"class":57,"line":207},15,[55,209,73],{"emptyLinePlaceholder":72},[55,211,213,216,219,222,225,228,230,233,236,239],{"class":57,"line":212},16,[55,214,215],{"class":82},"  printf",[55,217,218],{"class":86}," (",[55,220,221],{"class":65},"\"value of a = ",[55,223,224],{"class":174},"%d",[55,226,227],{"class":65},", b = ",[55,229,224],{"class":174},[55,231,232],{"class":65}," and c = ",[55,234,235],{"class":174},"%d\\n",[55,237,238],{"class":65},"\"",[55,240,241],{"class":86},", a, b, c);\n",[55,243,245],{"class":57,"line":244},17,[55,246,73],{"emptyLinePlaceholder":72},[55,248,250,253,256],{"class":57,"line":249},18,[55,251,252],{"class":61},"  return",[55,254,255],{"class":174}," 0",[55,257,178],{"class":86},[55,259,261],{"class":57,"line":260},19,[55,262,263],{"class":86},"}\n",[55,265,267],{"class":57,"line":266},20,[55,268,73],{"emptyLinePlaceholder":72},[55,270,272,274,276,278,280,283,285,287,290],{"class":57,"line":271},21,[55,273,90],{"class":61},[55,275,83],{"class":82},[55,277,87],{"class":86},[55,279,90],{"class":61},[55,281,282],{"class":93}," x",[55,284,97],{"class":86},[55,286,90],{"class":61},[55,288,289],{"class":93}," y",[55,291,292],{"class":86},")\n",[55,294,296],{"class":57,"line":295},22,[55,297,127],{"class":86},[55,299,301,304,307,309,312,315],{"class":57,"line":300},23,[55,302,303],{"class":61},"    int",[55,305,306],{"class":86}," z ",[55,308,171],{"class":61},[55,310,311],{"class":86}," x ",[55,313,314],{"class":61},"+",[55,316,317],{"class":86}," y;\n",[55,319,321,324],{"class":57,"line":320},24,[55,322,323],{"class":61},"    return",[55,325,326],{"class":86}," z;\n",[55,328,330],{"class":57,"line":329},25,[55,331,263],{"class":86},[28,333,334],{"start":69},[31,335,336,337],{},"全局变量",[28,338,339,342],{},[31,340,341],{},"位置：全局变量是定义在函数外部，通常是在程序的顶部。",[31,343,344],{},"作用域：全局变量在整个程序生命周期内都是有效的，在任意的函数内部能访问全局变量。",[46,346,348],{"className":48,"code":347,"language":50,"meta":22,"style":22},"#include \u003Cstdio.h>\n\n/* 全局变量声明 */\nint g;\n\nint main ()\n{\n  /* 局部变量声明 */\n  int a;\n\n  /* 静态(全局)变量声明 */\n  static int b;\n\n  /* 实际初始化 */\n  a = 10;\n  b = 20;\n  g = a + b;\n\n  printf (\"value of a = %d, b = %d and g = %d\\n\", a, b, g);\n\n  return 0;\n}\n",[52,349,350,356,360,365,372,376,384,388,392,399,403,408,418,422,426,436,446,460,464,488,492,500],{"__ignoreMap":22},[55,351,352,354],{"class":57,"line":58},[55,353,62],{"class":61},[55,355,66],{"class":65},[55,357,358],{"class":57,"line":69},[55,359,73],{"emptyLinePlaceholder":72},[55,361,362],{"class":57,"line":76},[55,363,364],{"class":133},"/* 全局变量声明 */\n",[55,366,367,369],{"class":57,"line":108},[55,368,90],{"class":61},[55,370,371],{"class":86}," g;\n",[55,373,374],{"class":57,"line":113},[55,375,73],{"emptyLinePlaceholder":72},[55,377,378,380,382],{"class":57,"line":124},[55,379,90],{"class":61},[55,381,118],{"class":82},[55,383,121],{"class":86},[55,385,386],{"class":57,"line":130},[55,387,127],{"class":86},[55,389,390],{"class":57,"line":137},[55,391,134],{"class":133},[55,393,394,396],{"class":57,"line":146},[55,395,140],{"class":61},[55,397,398],{"class":86}," a;\n",[55,400,401],{"class":57,"line":154},[55,402,73],{"emptyLinePlaceholder":72},[55,404,405],{"class":57,"line":159},[55,406,407],{"class":133},"  /* 静态(全局)变量声明 */\n",[55,409,410,413,415],{"class":57,"line":165},[55,411,412],{"class":61},"  static",[55,414,79],{"class":61},[55,416,417],{"class":86}," b;\n",[55,419,420],{"class":57,"line":181},[55,421,73],{"emptyLinePlaceholder":72},[55,423,424],{"class":57,"line":194},[55,425,162],{"class":133},[55,427,428,430,432,434],{"class":57,"line":207},[55,429,168],{"class":86},[55,431,171],{"class":61},[55,433,175],{"class":174},[55,435,178],{"class":86},[55,437,438,440,442,444],{"class":57,"line":212},[55,439,184],{"class":86},[55,441,171],{"class":61},[55,443,189],{"class":174},[55,445,178],{"class":86},[55,447,448,451,453,456,458],{"class":57,"line":244},[55,449,450],{"class":86},"  g ",[55,452,171],{"class":61},[55,454,455],{"class":86}," a ",[55,457,314],{"class":61},[55,459,417],{"class":86},[55,461,462],{"class":57,"line":249},[55,463,73],{"emptyLinePlaceholder":72},[55,465,466,468,470,472,474,476,478,481,483,485],{"class":57,"line":260},[55,467,215],{"class":82},[55,469,218],{"class":86},[55,471,221],{"class":65},[55,473,224],{"class":174},[55,475,227],{"class":65},[55,477,224],{"class":174},[55,479,480],{"class":65}," and g = ",[55,482,235],{"class":174},[55,484,238],{"class":65},[55,486,487],{"class":86},", a, b, g);\n",[55,489,490],{"class":57,"line":266},[55,491,73],{"emptyLinePlaceholder":72},[55,493,494,496,498],{"class":57,"line":271},[55,495,252],{"class":61},[55,497,255],{"class":174},[55,499,178],{"class":86},[55,501,502],{"class":57,"line":295},[55,503,263],{"class":86},[14,505,506],{},"在程序中，局部变量和全局变量的名称可以相同，但是在函数内，如果两个名字相同，会使用局部变量值，全局变量不会被使用。",[46,508,510],{"className":48,"code":509,"language":50,"meta":22,"style":22},"#include \u003Cstdio.h>\n\n void tset();\n/* 全局变量声明 */\nint g = 20;\n\nint main ()\n{\n  /* 局部变量声明 */\n  int g = 10;\n\n  printf (\"value of g = %d\\n\",  g);\n\n  test();\n\n  return 0;\n}\n\nvoid test()\n{\n    printf(\"value of g = %d\\n\",g);\n}\n",[52,511,512,518,522,533,537,550,554,562,566,570,582,586,602,606,613,617,625,629,633,644,648,664],{"__ignoreMap":22},[55,513,514,516],{"class":57,"line":58},[55,515,62],{"class":61},[55,517,66],{"class":65},[55,519,520],{"class":57,"line":69},[55,521,73],{"emptyLinePlaceholder":72},[55,523,524,527,530],{"class":57,"line":76},[55,525,526],{"class":61}," void",[55,528,529],{"class":82}," tset",[55,531,532],{"class":86},"();\n",[55,534,535],{"class":57,"line":108},[55,536,364],{"class":133},[55,538,539,541,544,546,548],{"class":57,"line":113},[55,540,90],{"class":61},[55,542,543],{"class":86}," g ",[55,545,171],{"class":61},[55,547,189],{"class":174},[55,549,178],{"class":86},[55,551,552],{"class":57,"line":124},[55,553,73],{"emptyLinePlaceholder":72},[55,555,556,558,560],{"class":57,"line":130},[55,557,90],{"class":61},[55,559,118],{"class":82},[55,561,121],{"class":86},[55,563,564],{"class":57,"line":137},[55,565,127],{"class":86},[55,567,568],{"class":57,"line":146},[55,569,134],{"class":133},[55,571,572,574,576,578,580],{"class":57,"line":154},[55,573,140],{"class":61},[55,575,543],{"class":86},[55,577,171],{"class":61},[55,579,175],{"class":174},[55,581,178],{"class":86},[55,583,584],{"class":57,"line":159},[55,585,73],{"emptyLinePlaceholder":72},[55,587,588,590,592,595,597,599],{"class":57,"line":165},[55,589,215],{"class":82},[55,591,218],{"class":86},[55,593,594],{"class":65},"\"value of g = ",[55,596,235],{"class":174},[55,598,238],{"class":65},[55,600,601],{"class":86},",  g);\n",[55,603,604],{"class":57,"line":181},[55,605,73],{"emptyLinePlaceholder":72},[55,607,608,611],{"class":57,"line":194},[55,609,610],{"class":82},"  test",[55,612,532],{"class":86},[55,614,615],{"class":57,"line":207},[55,616,73],{"emptyLinePlaceholder":72},[55,618,619,621,623],{"class":57,"line":212},[55,620,252],{"class":61},[55,622,255],{"class":174},[55,624,178],{"class":86},[55,626,627],{"class":57,"line":244},[55,628,263],{"class":86},[55,630,631],{"class":57,"line":249},[55,632,73],{"emptyLinePlaceholder":72},[55,634,635,638,641],{"class":57,"line":260},[55,636,637],{"class":61},"void",[55,639,640],{"class":82}," test",[55,642,643],{"class":86},"()\n",[55,645,646],{"class":57,"line":266},[55,647,127],{"class":86},[55,649,650,653,655,657,659,661],{"class":57,"line":271},[55,651,652],{"class":82},"    printf",[55,654,87],{"class":86},[55,656,594],{"class":65},[55,658,235],{"class":174},[55,660,238],{"class":65},[55,662,663],{"class":86},",g);\n",[55,665,666],{"class":57,"line":295},[55,667,263],{"class":86},[10,669,670],{"id":670},"内存四区",[14,672,673],{},"暂时无法在飞书文档外展示此内容",[28,675,676,682,688,694],{},[31,677,678,681],{},[34,679,680],{},"静态存储区（全局区）"," ：可以分为rodata区data区和bss区，已经初始化的只读常量被放在rodata,已经被初始化的非零变量被放在data区;没有被初始化的或者值为零的变量被放在bss区，通常默认初始化为 0(表示数字的数据类型)，'\\0'(char类型) 和 NULL(指针类型)。",[31,683,684,687],{},[34,685,686],{},"栈区（stack）"," ：局部变量被存放在该区，如果不初始化局部变量，那么局部变量是随机值。容量很小。",[31,689,690,693],{},[34,691,692],{},"堆区（heap）"," ：由程序员开辟内存空间给变量，由程序员分配和释放，如果程序员不进行释放内存，则会内存泄漏，当程序结束后，系统会帮忙释放没有被释放的内存。",[31,695,696,699],{},[34,697,698],{},"代码区"," ：存放 CPU 执行的机器指令，通常是只读的。",[701,702,703],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":22,"searchDepth":69,"depth":69,"links":705},[706,707,708],{"id":12,"depth":76,"text":12},{"id":26,"depth":76,"text":26},{"id":670,"depth":76,"text":670},"2",2000000,"2023-10-05","2023-10-05-cplusplus-jiao-xue","/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,null,{},"/wiki/2023-10-05-cplusplus-jiao-xue/ch2-cheng-xu-yun-xing-yu-bian-liang-sheng-ming-zhou-qi",{"title":5,"description":22},"wiki/2023-10-05-Cplusplus教学/ch2-程序运行与变量生命周期","VRvdVb-RGCIeP5b_8O_abaRXxuu1eAmM8rvrx13HOYQ",[724,730,736,737,743,749,755,761,767,773,779],{"path":725,"stem":726,"title":727,"date":711,"chapter":728,"chapterSort":729,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch1-qian-yan","wiki/2023-10-05-Cplusplus教学/ch1-前言","前言","1",1000000,{"path":731,"stem":732,"title":733,"date":711,"chapter":734,"chapterSort":735,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch10-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch10-现代C++","现代C++","10",10000000,{"path":719,"stem":721,"title":5,"date":711,"chapter":709,"chapterSort":710,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},{"path":738,"stem":739,"title":740,"date":711,"chapter":741,"chapterSort":742,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch3-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch3-头文件","头文件","3",3000000,{"path":744,"stem":745,"title":746,"date":711,"chapter":747,"chapterSort":748,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch4-c-yu-yan-he-c-de-i-o","wiki/2023-10-05-Cplusplus教学/ch4-C语言和C++的I_O","C语言 和 C++ 的I/O","4",4000000,{"path":750,"stem":751,"title":752,"date":711,"chapter":753,"chapterSort":754,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch5-c-ming-ming-kong-jian","wiki/2023-10-05-Cplusplus教学/ch5-C++命名空间","C++命名空间","5",5000000,{"path":756,"stem":757,"title":758,"date":711,"chapter":759,"chapterSort":760,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch6-lian-he-ti-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch6-联合体（共用体）","联合体（共用体）","6",6000000,{"path":762,"stem":763,"title":764,"date":711,"chapter":765,"chapterSort":766,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch7-typedef","wiki/2023-10-05-Cplusplus教学/ch7-typedef","typedef","7",7000000,{"path":768,"stem":769,"title":770,"date":711,"chapter":771,"chapterSort":772,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch8-jie-gou-ti","wiki/2023-10-05-Cplusplus教学/ch8-结构体","结构体","8",8000000,{"path":774,"stem":775,"title":776,"date":711,"chapter":777,"chapterSort":778,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":716},"/wiki/2023-10-05-cplusplus-jiao-xue/ch9-shu-ju-de-cun-fang","wiki/2023-10-05-Cplusplus教学/ch9-数据的存放","数据的存放","9",9000000,{"path":713,"stem":780,"title":781,"date":711,"chapter":717,"chapterSort":782,"docKey":712,"docRoot":713,"docTitle":714,"isWikiDoc":72,"isWikiIndex":72},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,1778560331315]