c语言静态变量的题目,明天考试所以请今晚之前回答,先谢谢了!!

c\u8bed\u8a00\uff0c\u9759\u6001\u53d8\u91cf\uff0c\u8fd9\u9053\u9898\u4e0d\u5e94\u8be5\u9009A\u5417

s+fun()
1\u3001 1+2
2\u3001 3+3
3\u3001 6+4
4\u3001 10+5
5\u3001 15+6
s\u7684\u503c\u662f\u4e0a\u6b21\u8fd0\u7b97\u4e4b\u548c\uff0c\u9759\u6001\u53d8\u91cf\u7684\u503c\u4e0d\u4f1a\u91ca\u653e\uff0c\u76f4\u5230\u7a0b\u5e8f\u8fd0\u884c\u7ed3\u675f

\u5f53\u7136\u9009A\u554a\u3002
static\u5173\u952e\u5b57\u4f60\u53ef\u4ee5\u60f3\u6210\u5bf9\u53d8\u91cf\u53ea\u58f0\u660e\u4e00\u6b21\uff0c\u7136\u540e\u8fd9\u4e2a\u53d8\u91cf\u4e00\u76f4\u5b58\u5728\u5e76\u4fdd\u5b58\u4e0a\u4e00\u6b21\u6539\u53d8\u8fd9\u4e2a\u53d8\u91cf\u65f6\u7684\u503c\u3002
\u7b2c\u4e00\u6b21\u8c03\u7528func\u51fd\u6570\u65f6\uff0ci=i m 1=3\uff0c\u7136\u540em=i a b=8\uff0c\u6240\u4ee5\u7b2c\u4e00\u6b21\u8f93\u51fap\u503c\u4e3a8\uff0c\u8fd9\u4e2a\u6ca1\u9519\uff0c\u7136\u540e\u518d\u6b21\u8c03\u7528func\u51fd\u6570\u65f6\uff0c\u6b64\u65f6m=8\u4e86\uff0c\u56e0\u4e3a\u7b2c\u4e00\u6b21\u4e2d\u6700\u540e\u6539\u53d8\u4e86m\u7684\u503c\uff0c\u6240\u4ee5\u7b2c\u4e8c\u6b21\u8c03\u7528\u662fm=8\uff0c\u6240\u4ee5\u8f93\u51fap\u503c\u4e3a17\u3002
\u5e0c\u671b\u6211\u7684\u56de\u7b54\u80fd\u5e2e\u52a9\u5230\u4f60\u3002

只需要搞清楚一点,主函数里的变量a和fun(b)函数里的变量a并不是同一个值,主函数里的a在把值传递给fun函数中的形参b之后,整个函数的运算就与它无关了。而fun函数里的a就只能是全局变量a了,其默认值为0。
静态变量c你应该很清楚吧,经过一次函数调用后它的值变为4,等第二次函数调用时它就还是4。
以下的运算结果大伙儿已经说得很清楚了。
所以第一次是((0+1)+(2+1)+(3+1))=8
此时全局变量a=1,静态变量c=4
第二次是((1+1)+(2+1)+(4+1))=10
所以结果是8 10

呵呵,祝你明天考试顺利。

810
静态变量就是static int c=3;该语句只在第一次碰到的时候给他赋初值,以后再执行到这里时直接跳过不再再赋值,而如果没有static则每次执行到这里都会给c赋初值3

#include<stdio.h>
int a;
int fun(int b)
{
static int c=3;
printf("a=%d,b=%d,c=%d",a,b,c);
return((++a)+(++b)+(++c));
}

main()
{
int a=2,i;
for(i=0;i<2;i++)
printf("%d",fun(a));//a,有问题,这里的a传到调用函数里,把 2传给b之后,这个a在b
//里面没有用了,你说一下你的目的吧
}

returnreturn((++a)+(++b)+(++c))
里的a不是主函数里的a(主函数里的a是局部变量,此时并无引用的fun函数里),而是前面的全局变量a,默认为0
所以第一次是((0+1)+(2+1)+(3+1))=8
此时全局变量a=1,静态变量c=4
第二次是((1+1)+(2+1)+(4+1))=10
所以结果是810

我没有运行,但觉得这程序有问题
全局变量a并没有初始化,初始化的是main函数的局部变量a
因为全局变量a没有初始化,程序的值应该是不确定的

fun函数里面的a不是主函数里面定义的那个a=2 而是程序一开始#include后面那句int a;定义的那个a 那个a是个全局变量 你定义的时候没有附初值那这个变量就默认是0 所以第一次调用函数是((0+1)+(2+1)+(3+1))=8

另外回答楼上仁兄的疑惑 在所有函数外面定义int a;是全局的也是静态的。虽不同于static int a;但它仍然是一个静态存储类型的变量。静态存储类型的int变量不赋初值的时候默认会存0。

我觉得关键在这里,首先得确定return((++a)+(++b)+(++c));里各变量的值,那个a应该是全局变量,即第二行的a,系统自动为其赋初值0, ((2+1)+(2+1)+(3+1))=10,你把a对应的2换成0,结果就不难理解了。
你还可以这样验证,在第二行为a赋值,如int a=1,输出的结果就9 11。这题可能的一个考察点为全局与局部变量的区别,fun函数里的a应来自全局变量,而非main函数里的a
我也刚刚研究了几十分钟才看明白

  • c璇█闈欐佸彉閲忕殑棰樼洰,鏄庡ぉ鑰冭瘯鎵浠ヨ浠婃櫄涔嬪墠鍥炵瓟,鍏堣阿璋簡!!
    绛旓細姝ゆ椂鍏ㄥ眬鍙橀噺a=1锛闈欐佸彉閲c=4 绗簩娆℃槸((1+1)+(2+1)+(4+1))=10 鎵浠ョ粨鏋滄槸8 10 鍛靛懙锛岀浣鏄庡ぉ鑰冭瘯椤哄埄銆
  • c璇█闈欐佸彉閲忕殑涓閬撻
    绛旓細鎵璋闈欐佸彉閲灏辨槸璇磋鍙橀噺鐨绌洪棿骞堕潪鍦ㄥ姩鎬佸唴瀛樺尯鍩熷紑杈燂紝鑰屽湪闈欐佸唴瀛樺尯鍩熷紑杈燂紝涔熷氨鏄杩欎釜鍙橀噺绌洪棿涓缁忓垎閰嶉櫎闈炴暣涓▼搴忚繍琛屽畬锛岃繖涓彉閲忕殑绌洪棿鎵嶄細琚敹鍥炪傚嵆渚挎槸鍦ㄥ瓙鍑芥暟涓畾涔夌殑锛屾棤璁轰綘璋冪敤杩囧灏戞锛岄偅涓垵濮嬪寲鐨勮鍙ワ紙static int k=2)浠呬粎鍦ㄧ涓娆¤皟鐢ㄦ椂鎵ц锛岄殢鍚庨兘璺宠繃涓嶆墽琛屻備篃灏辨槸璇达紝i...
  • 鏈夊叧c璇█鍑芥暟闈欐佸彉閲
    绛旓細闈欐佸彉閲鏄竴绉嶇敓瀛樻湡涓烘暣涓簮绋嬪簭鐨勯噺銆傝櫧鐒剁寮瀹氫箟瀹冪殑鍑芥暟鍚庝笉鑳戒娇鐢紝浣嗗鍐嶆璋冪敤瀹氫箟瀹冪殑鍑芥暟鏃讹紝瀹冨張鍙户缁娇鐢紝 鑰屼笖淇濆瓨浜嗗墠娆¤璋冪敤鍚庣暀涓嬬殑鍊笺傜涓涓猵rintf( "%d\n", func(k+=100) );k+=100,k灏辨槸200锛泋++; y++; k++; x=2,y=11,k=201;鎵浠ョ涓娆℃墦鍗版槸214 绗簩涓...
  • C璇█鑰冭瘯棰樼洰姹傝В
    绛旓細绛旀鏄15銆傝繖鏄洜涓哄嚱鏁癴()涓殑i琚0鏄庝负闈欐佸彉閲锛岄潤鎬佸彉閲忎笉浼氶噸澶嶅垵濮嬪寲锛岄櫎浜嗛娆¤繘鍏ユ椂琚疆0澶栵紝鍐嶆杩涘叆鍚庝笉浼氭墽琛static int i=0璇彞銆傚洜姝鍦5娆″惊鐜腑鍏舵暟鍊煎垎鍒负0銆1銆2銆3銆4銆傛墍浠()鐨勮繑鍥炵粨鏋滀緷娆℃槸1銆2銆3銆4銆5銆
  • c璇█绋嬪簭 鍏ㄥ眬鍙橀噺鍜闈欐佸彉閲搴旂敤闂 棰樼洰濡備笅
    绛旓細int i;for(i=1;i<x;i++) //杩欓噷x=3鎵浠ュ彧寰幆2娆 incre();} void incre(){ static int x=1;x=x+1; //绗竴娆¤皟鐢ㄧ殑鏃跺檟=1+1=2锛岀浜屾璋冪敤鐨勬椂鍊欏洜涓烘槸闈欐佸彉閲x=2+1=3;printf("%d",x); //濡傛灉鏈夌涓夋鍒檟=3+1=4,绗洓娆=4+1;绗簲娆=5+1=6;} ...
  • C璇█闈欐佸彉閲闂?
    绛旓細static鍙橀噺 static澹版槑鐨勫彉閲忎负鈥滈潤鎬佸眬閮ㄥ彉閲忊濓紝鍙橀噺鍐呭鍏锋湁鎸佷箙鎬с傝灞閮鍙橀噺鐨鍊煎湪鍑芥暟璋冪敤缁撴潫涔嬪悗涓嶄細娑堝け锛岃屼粛鐒朵繚鐣欏叾鍘熷笺傚嵆瀹冩墍鍗犵敤鐨勫瓨鍌ㄥ崟鍏冧笉閲婃斁锛屽湪涓嬩竴娆¤皟鐢ㄨ鍑芥暟鏃讹紝鍏跺眬閮ㄥ彉閲忕殑鍊间粛鐒跺瓨鍦紝涔熷氨鏄笂涓娆″嚱鏁拌皟鐢ㄧ粨鏉熸椂鐨勫笺俽eturn m++ 鍓嶇疆++鏄敤涔嬪墠灏卞姞1锛岀敤鐨勪汉鎷垮埌鐨勪竴瀹...
  • 璁$畻鏈轰簩绾鑰冭瘯c璇█棰樼洰鍙婄瓟妗堣绠楁満浜岀骇鑰冭瘯c璇█棰樼洰
    绛旓細鍏充簬璁$畻鏈轰簩绾鑰冭瘯c璇█棰樼洰鍙婄瓟妗堬紝璁$畻鏈轰簩绾ц冭瘯c璇█棰樼洰杩欎釜寰堝浜鸿繕涓嶇煡閬擄紝浠婂ぉ鏉ヤ负澶у瑙g瓟浠ヤ笂鐨勯棶棰橈紝鐜板湪璁╂垜浠竴璧锋潵鐪嬬湅鍚э紒1銆佽繖涓富瑕佽冨療鍙橀噺鐨浣滅敤鍩熷浜巌nta=1杩欏彞涓殑a浣滅敤鍩熸槸鏈澶х殑锛屾槸鏁翠釜.c鏂囦欢锛岄鍏堣鏄庣櫧锛屽綋杩欎釜a鐨勪綔鐢ㄥ煙涓殑鍏朵粬鍦版柟鍑虹幇鍚屽悕鍙橀噺瀹氫箟鏃讹紝杩欎釜浣滅敤鍩熸瘮杈冨ぇ鐨...
  • c璇█:static闂
    绛旓細涓銆闈欐鍏ㄥ眬鍙橀噺 鍏ㄥ眬鍙橀噺(澶栭儴鍙橀噺)鐨勮鏄庝箣鍓嶅啀鍐犱互static 灏辨瀯鎴愪簡闈欐佺殑鍏ㄥ眬鍙橀噺銆傚叏灞鍙橀噺鏄潤鎬佸瓨鍌ㄦ柟寮锛 闈欐佸叏灞鍙橀噺涔熸槸闈欐佸瓨鍌ㄦ柟寮忋 杩欎袱鑰呭湪瀛樺偍鏂瑰紡涓婂苟鏃犱笉鍚屻傝繖涓よ呯殑鍖哄埆铏藉湪浜庨潪闈欐佸叏灞鍙橀噺鐨浣滅敤鍩熸槸鏁翠釜婧愮▼搴忥紝 褰撲竴涓簮绋嬪簭鐢卞涓簮鏂囦欢缁勬垚鏃讹紝闈為潤鎬佺殑鍏ㄥ眬鍙橀噺鍦ㄥ悇涓簮鏂囦欢涓...
  • c璇█棰樼洰 楂樻墜鏉ユ潵!!!
    绛旓細1銆佸銆傚彧鏈塻tatic鍓嶇紑鐨勬墠鏄闈欐佸彉閲銆2銆佽緭鍑烘槸5,6,7,绗竴娆¤繍琛岋細a=2锛宮=n=0;锛岀劧鍚庨兘++锛屽拰鏄5 绗簩娆¤繍琛岋紝a=3锛宮=n=0;鐒跺悗閮++锛屽拰鏄6 绗笁娆¤繍琛岋紝a=4锛宮=n=0;鐒跺悗閮++锛屽拰鏄7 鑷充簬瀵逛簬闈欐佸彉閲弉锛屼负浠涔堜笂娆¤皟鐢╢ 鍚庣殑缁撴灉淇濆瓨涓嶄笅鏉ワ紵鍥犱负鏈夎繖鍙=n=0;鐩稿綋浜庢槸姣忔...
  • 姹傚姪涓閬C璇█棰樼洰?
    绛旓細D姝g‘锛屾暟鎹被鍨嬪瓨鍌ㄥ悗瀹為檯涓婇兘鏄竴鏍凤紝鍙槸鍗犵敤鐨勬暟鎹┖闂翠笉鍚屻俢har鏄8浣嶏紝int鏄16浣(涓嶅悓骞冲彴鐣ユ湁涓嶅悓)銆傛瘮濡傦紝char a = 65;char b = 'A';瀹為檯涓婏紝瀛樺偍鐨勯兘鏄簩杩涘埗01000001(B)锛屾寜鐓т笉鍚岀殑鎵撳嵃鏂瑰紡锛%c鎵撳嵃鍑篈锛%d鎵撳嵃鍑65.LV.4 2019-10-28 D姝g‘锛屾暟鎹被鍨嬪瓨鍌...
  • 扩展阅读:扫一扫题目出答案 ... 怎样鼓励孩子考试考好 ... 论文题目生成器 ... 查答案扫一扫 ... 免费答题扫一扫 ... 标题生成器 ... 扫一扫一秒出答案 ... c#考试题库 ... 免费拍照答题一秒出答案 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网