Printf以字符串作为参数

时间:2015-04-03 13:31:11

标签: c output

请考虑以下事项:

char abc[14] = "C Programming"; printf("%s", abc + abc[3] - abc[4]);

上述printf语句的输出是" rogramming"。我似乎无法确定如何获得此输出。

2 个答案:

答案 0 :(得分:5)

因为字符是一种整数形式。

    abc + abc[3] - abc[4]
==> abc + 'r' - 'o'
==> abc + 3

因此您从索引3开始打印字符串abc。

答案 1 :(得分:4)

abc是一个数组。在表达式中使用时,在大多数情况下,它转换为指向其第一个元素的指针。 abc[3]char'r'abc[4]'o'abc[3] - abc[4] = 'r' - 'o' = 3abc + 3 = &abc[3]
因此,表达式abc + abc[3] - abc[4]等同于指向字符串"C Programming"的3 rd 字符的指针。