结果怎么算出来的 求解析

结果12345
234
3
#include <stdio.h>
#include <string.h>
int main()

char line[]="12345";
int i,k=strlen(line);
for(i=0;i<4;i++)

line[k-i]='0';
puts(line+i);

return 0;

k=5
第一次循环:k-i=5-0=5 line[5]='0' line+0取的是line从0开始的值 因此输出 12345
第二次循环 i=1 k-i=4 line[4]='0' 0代表结束符号 liine+1 取从1开始的值到4结束 结果为 : 234
第三次循环 i=2 k-i=3 line[3]='0' line+2 取从2开始的值到3结束 结果为 :3
第四次循环 i=3 k-i=2 line[2]='0' 为空行

  • k=5,因为line有五个元素
  • i=0时,line[k-i]=line[5] // 这个地方会报错,数组越界