扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
函数其实没有释放内存的概念,因为函数都是在指令区,而不是通常所说的释放内存对应的数据区,不过在整个程序执行完之后指令区也是要释放的。
公司主营业务:做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出兴业免费做网站回馈大家。
函数调用的大概过程如下:
1,将调用函数的上下文入栈;
2,调用被调用函数;
3,被调换函数执行;
4,调用函数上下文出栈,继续执行后继指令。
所以在函数调用过程中原调用函数是不会退出的-----即你所说的释放内存。
具体到你给的代码:
首先main中调用test,
进入test后要求读入一个char,
你输入'1'后执行case
'1'中语句,所以输出“已调用”,然后就执行test()语句,即递归调用,此时main调用的test要等新的test执行完毕才能继续执行后继的i++语句;
再次进入test之后与从main中进入时一样,如果输入的是'1'会接着递归调用test,由于你输入了5次1,所以会继续调用5次test;
在最后一个test中你输入了ESC?
所以不再走case
'1'而走default了,所以输出"222222";
switch执行完之后判断c==27满足,所以while循环退出,继续执行printf语句,由于之前的test统统没有执行过case
1里的i++语句,所以全局变量i还是0;输出i=0;
到此最后一次test执行完毕;
倒数第二次的test继续执行i++,
所以i=2了,case
1执行完毕,但由于没有写break语句,所以继续执行default
语句,输出"222222",
退出switch语句,判断c==27,
由于c是全局变量,且最后一次输入的刚好是ESC,
所以判断满足,
退出while循环,输出i=1,
到此倒数第二次test执行完毕;
与倒数第二次类似的继续执行倒数第三、倒数第四、倒数第五和最终的第一次test后继代码,也就输出如你列出的结果了。
int gys(int,int);
你说的是这一句吧。
这是声名了 一个叫gys返回值类型是 int类型的函数。
gys是函数名
C语言中'\n'是换行的意思,一般放到printf()这类函数中使用,比如:
printf("this
is
a
test\n
Please
check
it\n");
结果是:
this
is
a
test
Please
check
it
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流