请教:C语言中line + len为何能输出"Amed"?代码解析
为什么
line + len能得到"Amed"? 咱们先把第一行的字符串拆成字符索引来分析:
第一行内容是Jim: 100.00 Amed,每个字符的索引(从0开始计数)对应如下:
- 索引0-3:
J、i、m、: - 索引4:空格
- 索引5-10:
1、0、0、.、0、0 - 索引11:空格
- 索引12及之后:
A、m、e、d
在C语言里,字符串本质是字符数组,line是指向这个数组首地址的指针。line + len就是让指针从数组开头向后偏移12个字符的位置,刚好指向索引12处的A。而printf的%s格式符会从指针指向的位置开始输出字符,直到遇到字符串结束符\0,所以最终就输出了从A起始的"Amed"。
内容的提问来源于stack exchange,提问作者amed svensson
相关产品推荐
相关产品推荐

