请考虑以下事项:
char abc[14] = "C Programming"; printf("%s", abc + abc[3] - abc[4]);
上述printf语句的输出是" rogramming"。我似乎无法确定如何获得此输出。
答案 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' = 3
。 abc + 3
= &abc[3]
。
因此,表达式abc + abc[3] - abc[4]
等同于指向字符串"C Programming"
的3 rd 字符的指针。