需要说明在C中输出“ puts”

时间:2018-09-30 15:34:59

标签: c string pointers pointer-arithmetic puts

我正在寻找此代码段输出的解释。我已经搜索了互联网,但找不到令人满意的解释。

main()
{
     char x[10]="abcdefg" ;
     puts(&x[4]) ;
}

执行此代码后,我得到“ efg”作为输出。

能否请您解释一下此输出? 如果此平台不解决此类问题,我们深表歉意。

2 个答案:

答案 0 :(得分:3)

&x [4]是字符数组x元素4的内存中的地址。 这意味着看跌期权正在接收“ efg”作为输入。

答案 1 :(得分:1)

根据C11,第7.21.7.9章

int puts(const char *s);
     

puts函数将s指向的字符串写入到stdout指向的流中,并在输出后附加换行符。终止的空字符不是   书面。 [...]

因此,在您的情况下,您要传递数组x中第五个元素的地址(是的,C数组使用基于0的索引),以及该字符串中的其余元素,直到终止为止将输出null。