梦到有人去世自己大哭:数组指针题

来源:百度文库 编辑:高考问答 时间:2024/04/28 07:57:45
main()
{ char s[]"Yes\n/No",*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
程序运行后的输出结果是n/NO
Yes
帮我分析下好吗

s里面储存的是

s[0]=Y
s[1]=e
s[2]=s
s[3]=\n
s[4]=/
s[5]=N
s[6]=o
s[7]=\0
当*ps=s也就是让ps指向s的第一个单元s[0]

而ps+4 也就是把输出的起始单元移至 s[4],所以输出/NO

当*(ps+4)=0,也就是给s[4]='\0',所以puts时遇到的第一个结束符就是s[4].

也就输出了Yes_ ("_" 表示换行) 这4个字母

puts(ps+4); /*指针*p后移4位,输出n/No */
*(ps+4)=0 /*将0赋给 *(ps+4)指向的内存 ,即数组内容变为Yes\0 */
puts(s); /*输出S,即为Yes,遇\0结束 */