作业帮 > 综合 > 作业

说出对下面C语言程序的理解...

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/06 02:42:31
说出对下面C语言程序的理解...
#include
#include
void fun(int *p1,int *p2,int *s)
{
\x09s=(int *)malloc(sizeof(int));
\x09*s=*p1+*p2;
\x09free(s);
}
main()
{
\x09int a=1,b=40,*q=&a;
\x09fun(&a,&b,q);
\x09printf("%d\n",*q);
}
1.,详细解读答案的由来 ,
2,测重点,就这一题,说明什么是形参,什么是实参,两者的区别,要求通俗易懂。
对采纳的答案 ,给分不会少于100.
谢谢!
在本题中,程序首先从main程序开始执行,定义了整型变量a和b,另外定义了一个指针q,其指向a,然后,调用函数fun,而且函数fun中就能够分清楚那里是形参,那里是实参,void fun(int *p1,int *p2,int *s),这句话,我们看到pq s都没有具体的值,所以他们是形参!fun(&a,&b,q),这句话里面,a b q 有具体的值,其中,a的值是1,b的值是40,q的值是存放变量a的地址!而且fun函数里面实参q是将a的地址值作为内容传递给s,然后s的内容又被重新分配的地址值给覆盖了(s=(int *)malloc(sizeof(int));这句话),最后将a 的值和b的值相加赋给s,然后在释放s,而这个过程,一直都没有牵涉到指针q的内容的修改,即q还是存放a的地址,所以最后输出结果是1