关于C语言的问题
展开全部
a+=f(g(a));开始a=0;
首先调用g(a),由于g(i)参数是传地址,故i在函数体内的修改会保持。故g(a)返回1,返回后a=1;
接着调用f(g(a))=f(1),f(i)参数是传值,i在函数体内修改不会影响外部i的值。f(1)返回2,返回后a=1;但同时a+=f(g(a))=a+f(g(a))=1+2=3;
然后g(g(b)),此时b=0
首先调用g(b),返回1,返回后b=1;
再调用g(g(b))=g(1),返回2,返回后b=1,因为g(g(b))传进去的参数是g(b)返回值,并不是b,故在外层g函数执行过程中b没有改变,还是1;
b+=g(g(b))=b+g(g(b))=1+2
=
3;
f(h(c)),此时c=0
首先调用h(c),返回1,返回后c=0;因为此时传入参数为int,函数参数为char,要进行类型转换,此过程会产生副本,即产生一个c的副本,为char类型,所以此时在函数体中修改c的副本,不会影响外部c的值。
再调用f(h(c))=f(1),返回2,返回后c=0
c+=f(h(c))=0+2
=
2;
首先调用g(a),由于g(i)参数是传地址,故i在函数体内的修改会保持。故g(a)返回1,返回后a=1;
接着调用f(g(a))=f(1),f(i)参数是传值,i在函数体内修改不会影响外部i的值。f(1)返回2,返回后a=1;但同时a+=f(g(a))=a+f(g(a))=1+2=3;
然后g(g(b)),此时b=0
首先调用g(b),返回1,返回后b=1;
再调用g(g(b))=g(1),返回2,返回后b=1,因为g(g(b))传进去的参数是g(b)返回值,并不是b,故在外层g函数执行过程中b没有改变,还是1;
b+=g(g(b))=b+g(g(b))=1+2
=
3;
f(h(c)),此时c=0
首先调用h(c),返回1,返回后c=0;因为此时传入参数为int,函数参数为char,要进行类型转换,此过程会产生副本,即产生一个c的副本,为char类型,所以此时在函数体中修改c的副本,不会影响外部c的值。
再调用f(h(c))=f(1),返回2,返回后c=0
c+=f(h(c))=0+2
=
2;
展开全部
int
g(int
&i){return++i;}是一个函数,其参数是一个整型的引用,也就是在函数中对此参数进行修改也会影响到实际参数的值.
c+=f(h(c));是一个表达式,把它展开就是c=c+f(h(c))这种形式.
g(int
&i){return++i;}是一个函数,其参数是一个整型的引用,也就是在函数中对此参数进行修改也会影响到实际参数的值.
c+=f(h(c));是一个表达式,把它展开就是c=c+f(h(c))这种形式.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main函数有多种写法的,以下几种都可以:
main()
{
……
}
main(void)
{
……
}
main(int
arg,char
*args[])
{
……
}
void
main()
{
……
}
void
main(void)
{
……
}
void
main(int
arg,char
*args[])
{
……
}
int
main()
{
……
return
0;
}
int
main(int
arg,char
*args[])
{
……
return
0;
}
最后一种是最规范的
main()
{
……
}
main(void)
{
……
}
main(int
arg,char
*args[])
{
……
}
void
main()
{
……
}
void
main(void)
{
……
}
void
main(int
arg,char
*args[])
{
……
}
int
main()
{
……
return
0;
}
int
main(int
arg,char
*args[])
{
……
return
0;
}
最后一种是最规范的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言的程序都是靠函数构成的,而函数是有自己的类型的。main作为主函数,函数前面的东西即为函数的类型。
用void形容的函数是无返回值函数,即void
main()则无需返回一个值,但是省略了void也是可以的,不过严格来讲,无返回值函数规范的还是要加void的,如果是个有返回值的函数则必须要用相应的类型来定义。 main()
可以代替
void
main(),
只要在在程序的最后一条加上
return;
,void
main()
有时不能代替
main().完全可以不用viod
main().在VC++6.0中viod
main()
没有返回值.main()
=
int
main()
有返回值.如果只
run
这个程序,
用void
main().如果用函数system
call
这个程序,
有时要返回值.要用int
main().在VC++6.0中,如果用int
main().在程序的最后一条是return();
望采纳
用void形容的函数是无返回值函数,即void
main()则无需返回一个值,但是省略了void也是可以的,不过严格来讲,无返回值函数规范的还是要加void的,如果是个有返回值的函数则必须要用相应的类型来定义。 main()
可以代替
void
main(),
只要在在程序的最后一条加上
return;
,void
main()
有时不能代替
main().完全可以不用viod
main().在VC++6.0中viod
main()
没有返回值.main()
=
int
main()
有返回值.如果只
run
这个程序,
用void
main().如果用函数system
call
这个程序,
有时要返回值.要用int
main().在VC++6.0中,如果用int
main().在程序的最后一条是return();
望采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询