C语言程序阅读题怎么做?

C语言程序阅读题怎么做?,第1张

您好!结果应该是20。主要看的是else跟的是哪个if。

如果else有括号,就看括号是哪个if就跟哪个If。如果没有括号,就跟最近的if

这里的else没有括号,应该是if(!c)的else。

所以d之外开始的时候赋值了20,其他的分支条件都没进。结果应该是20

因为narr[0]]的地址为0012FF08

所以 narr[1]的地址为0012FF0C

narr[2]的地址为0012FF10

narr[3]的地址为0012FF14

p的初始值为narr的首地址, 即0012FF08

&p[2]即narr[2]的地址0012FF10 该地址存放的值为63

之后p进行了自减

则此时p的地址为0012FF08 - 4 为0012FF04

&p[4] 为原来narr[3]的地址, 即 narr[3]的地址为0012FF14,

narr[3]的值是100

这个程序有BUG,执行时极可能报告段错误(segmentation fault)。

错误原因在于:指针p没有初始化。

---

如果:char s[] = "123456789", *p, i = 0

改为:char s[] = "123456789", *p = s, i = 0

那么:程序输出结果为:*2*4*6*8*

原因:

当i = 0,2,4,6,8时,if条件i%2 == 0为真,故执行*p=‘*’,即修改数组s的第0,2,4,6,8个元素值为‘*’,亦即将1、3、5、7、9修改为*。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存