重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先你要理解运行时执行栈的概念,运行在一个函数中的时候,局部变量是依次压在栈区的,函数返回后释放,相同的地址可能被下一个运行的函数中的局部变量重用。
我们一直强调网站设计、成都网站制作对于企业的重要性,如果您也觉得重要,那么就需要我们慎重对待,选择一个安全靠谱的网站建设公司,企业网站我们建议是要么不做,要么就做好,让网站能真正成为企业发展过程中的有力推手。专业网站制作公司不一定是大公司,成都创新互联公司作为专业的网络公司选择我们就是放心。
如果注释掉fun2,你只调用了fun1,局部变量p1的值为fun1里面j所占的地址,内容为5,返回后p=p1, *p 为 5,
如果不注释掉fun2, fun1退出后,执行栈上继续运行fun2.由于fun1的j和fun2的j1所在的偏移相同,它们在实际内存中所占的地址也是相同的,所以p2的值,也就是fun2的j1的地址,也就是fun1的j的地址,它的内容被改为10,所以p现在等于p1等于p2等于j1的地址等于j的地址,所以内容是10
另外,你这个程序肯定是错的,别这么写,考试肯定挂,上班肯定被开除
因为在函数调用期间的局部变量,当这个函数返回时,局部变量将会消失(被系统回收)而不复存在,所以若返回一个局部变量的指针,则返回后就变成一个“野指针”。
原程序中的错误太多。因为主程序中已经能够保证调用函数时的n是大于0的,所以,函数可以大大简化:
#include stdio.h
int main()
{ int jiecheng(int n);
int a=jiecheng(5);
if(a0)printf("%d\n",a);
else printf("error");
return 0;
}
int jiecheng(int n)
{ int sum=1;
if(n1)
{ sum=jiecheng(n-1)*n;
}
return sum;
}
返回值的意思是将函数实现的结果返回给调用者。
按标准来说,C的main函数是需要有返回值的。标准中main函数返回类型是int的,所以需要一个返回值。但是由于历史原因,很多地方可以看到没有返回值的main。
比如直接main()或者说void main() 但是这样一般编译器也不会认为错误,不过建议还是写标准的C的main函数,最好有一个返回值,0表示正常退出。
扩展资料:
常用库函数有:
scanf格式输入函数
printf格式输出函数
systemdos命令函数
sort排序
main主函数
fgets文件读取字符串函数
fputs文件写入字符串函数