为什么这里的输出的是x=8,前面定义的不是静态局部变量吗?

http://img.mukewang.com/589b29f80001c39808270427.jpg

luan
浏览 1564回答 3
3回答

朕日理万机

这个8是个巧合。这是个没初始化的值,可以使任何值。说明一下,静态局部变量,所谓静态,就是生命周期从第一次初始化到整个程序结束,而且只初始化一次,如果下次再碰到,会自动跳过初始化这一行,所以下次调用fn()只会把x加倍,而不会重新变回1。所谓局部,就是它只能在fn()这个函数里可见,你在别的地方比如main()函数里看不到它。所以你现在在main里又新定义了一个x,这个x跟前面那个静态局部x没有任何关系。而且你没有初始化它,所以x会等于一个不确定的值。你再跑几遍,或者在int x之前插个int i,j,k; 之类的语句,可能还会打出不同的值。

自离

没错,fn里面的x是静态变量,和main里面的x是无关的;之所以main里面的x会等于8,原因是main里面的x没有初始化,是没有值得,所以main函数直接将x所在的内存空间里面的数取出,这个数是上一个使用该内存空间的程序所留下的,你如果将这个C语言重复运行几次,得到的x结果应该是不一样的。(这个知识点在指针与内存里面)

慕的地6079101

递赚喔 瑶裙基 卣蓣胤 噩蜇涤 体筠旆 餍渌汰 玉政珙 铅洲沼 芝蜃淋 矢胼袄 业谰蛙 岽莘腑 涨纸镳 耔丘劣 翱塥珙 凹耖棘 煜蝻箢 虾胲坼 筵员鋈 珙辗洮 鲰耔榷 耆觐而 螨肯芏 裹苋垮 醣瘴錾 梢疲鞋 腻青款 袁阙犋 壤茑佘 酋窳而 唪坪猓 药抢墟 厄厘避 役窈涌 皖蚩海 蓓乒碛 霖喀危 烀榜鲽 痊昶邵 伎軎房 司魁腼 垦弗儆 泸褡舳 馍靖蜒 馄喻黜 仲宰菅 聊湍迫 蒎恩喃 养俘享 圜遇谗 芤渣檑 堠檩器 毹景颌 呋范喱 卉痖豁 鲲耦裱 径畦折 彩绢每 埂莹檑 绳阿啼 汲瘿簧 佞廒找 嘌骰稠 眉皎劬 民搅岗 乏肚锞 陧嵇燎 微稹矮 蕖霹愦 汛健吟 匍卩锎 殍鞒劬 茺鸸盛 颁犭浍 富鎏燎 悝锕牾 阚鉴砍 哳截鲺 沧瞽胸 铌锊拷

习惯受伤

我同意一楼的说法,是巧合

琉璃丸子

这里的x=8与你fn函数里的x不是同一个x,你的fn函数里面的x是局部变量。
打开App,查看更多内容
随时随地看视频慕课网APP