这个程序有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修改为*。
您好,很高兴回答您的问题。您的这个程序主要是学会指针与数组的关系,以及数字字符型数据之间的关系。首先是定义字符型数组s,包含6个字符。然后定义指针变量p,指向字符型数据,并且p指向数组a。接下来往p所指向的位置,就是a数组中输入字符数据。当p指向的位置数据不为\0,即字符结束的标志时,对n的数据乘以8,再加上当前p所指向的字符减去字符0。需要注意的时,两个数字型字符相减,得到的就是两个数字相减的结果。
所以这个题目的结果为第一次n=0*8+3-0=3,第二次=3*8+2-0=26,第三次=26*8+1-0=209。所以最终输出结果为209。