C语言问题:请选出以下程序的输出结果

C语言问题:请选出以下程序的输出结果,第1张

答案选C

此题主要考的是指针数据传递和函数返回值的用法。

解析:

首先看下面这个函数:

for(i=0 i<4 i++)

{ sub(a,x) printf("%d",x)}

printf("\n")

}

请弄清楚这里的for 函数一共执行了四次。每一次都会执行一次sub(a,x)函数,所以接下来我们需要关注的是sub(a,x)函数。程序进入sub(a,x)函数后,注意函数参数中这里用到了指针,指针的特点是链上参数地址了,所以sub函数的第一参数会随着for函数的变化跟着变化,而sub的第二个参数是从for函数中传递过来的,不具备指针功能,于是在没有return函数的前提下,是不能回传的。

所以for函数中的对参数x的打印始终保持着原来x的值,因此程序打印出来的结果:0 0 0 0

题中知识点归纳:

1、c语言指针使用的过程中,除非改变指针的指向或直接改变指针所指向的内容,否则指针指向内容是不会变化的。

2、c语言中,如果需要回传参数,请使用return()函数。

3、c语言中,static 关键字可以是的参数不会因为第二次进入而回归0值。

c语言程序设计 参考书籍/文献:

1、《c primer plus》

2、《数据结构(c语言版)例题详解与课程设计指导》第二版

sub返回i的阶乘:i=1 subsum=1*1=1 结果: sum1=1

i=2 subsum=2*1 =2sum2=2+1=3

i=3subsum=3*2*1=6sum3=6+3=9

i=4 subsum=4*3*2*1=24 sum4=24+9=33

1、首先这是JAVA中的多态

2、多态体现在方法上,成员变量没有多态。

3、Arabik类继承了Greek类,getl方法被重写。

4、main方法中,引用变量ga指向的是Arabik的实例

5、根据上面的第2点,成员变量无多态的概念,所以,ga.i = 1

ga.getl(), 多态,运行期绑定,指向的是Arabik类实例的方法(第4点),而不是Greek,所以调用的是Arabik类下的getl方法。

这就是原因。

楼主可去了解下java中多态的机制

希望对你有帮助

祝学习顺利


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12105429.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存