十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
因为m,i是静态局部变量,静态局部变量是这样的:第一次运行子程序时,执行初始化,子程序结束时,静态局部变量的存储空间不会被回收,也就是说它们的值会被保存起来。第二次运行子程序时,不再初始化静态局部变量了,而是直接调用,然而上一次运行后的值被保存下来了,所以就会用第一次的m,i值了
东港网站建设公司创新互联,东港网站设计制作,有大型网站制作公司丰富经验。已为东港上千提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的东港做网站的公司定做!
因为第二次调用的时候 你那些判断条件都走不进去,在while中死循环了!!!你可以在调用第二次之前,把你那些全局变量都清空一下就可以了。
这个问题很常见,正是因为使用了getchar()函数,getchar()函数只会从标准输入缓冲区中读取一个字节,剩下的还留在缓冲区,比如你输入"a",那么getchar()函数值读取'a',而不会处理你按下的回车,也就是'\n'还留在标准输入缓冲区,那么,等第二次调用getchar()的时候,由于缓冲区里还有1个字节的'\n'未使用,故getchar()会使用字符'\n'而不会阻塞等待输入
建议在第二个getchar()前加上一句:
fflush(stdin);
一个函数只能有一个返回值,指针可以返回多个,例如:
void aaa()
{
int *a,*c;
int a,c;
*a=a;*c=c;
a=b();c=b();
}
下面调用 *a和*c.
扩展资料:
在C语言中,指针的使用非常广泛,因为使用指针往往可以生成更高效、更紧凑的代码。总的来说,使用指针有如下好处:
1、指针的使用使得不同区域的代码可以轻易的共享内存数据,这样可以使程序更为快速高效;
2、C语言中一些复杂的数据结构往往需要使用指针来构建,如链表、二叉树等;
3、C语言是传值调用,而有些操作传值调用是无法完成的,如通过被调函数修改调用函数的对象,但是这种操作可以由指针来完成,而且并不违背传值调用。
参考资料来源:百度百科-指针 (编程语言中的一个对象)
因为m,i是静态局部变量,静态局部变量是这样的:第一次运行子程序时,zhidao执行初始化,子程序结束时,静态局部变量的存储空间不会被内回收,也就是说它们的值会被保存起来。第二次运行子程序时,不再初始化静态局部容变量了,而是直接调用,然而上一次运行后的值被保存下来了,所以就会用第一次的m,i值了