以字符串为参数的 printf
Printf with strings as arguments
考虑以下因素:
char abc[14] = "C Programming"; printf("%s", abc + abc[3] - abc[4]);
以上printf语句的输出为"rogramming"。我似乎无法弄清楚如何获得此输出。
因为字符是整数的一种形式。
abc + abc[3] - abc[4]
==> abc + 'r' - 'o'
==> abc + 3
因此您从索引 3 开始打印字符串 abc。
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"
.
的第 3rd 个字符的指针
考虑以下因素:
char abc[14] = "C Programming"; printf("%s", abc + abc[3] - abc[4]);
以上printf语句的输出为"rogramming"。我似乎无法弄清楚如何获得此输出。
因为字符是整数的一种形式。
abc + abc[3] - abc[4]
==> abc + 'r' - 'o'
==> abc + 3
因此您从索引 3 开始打印字符串 abc。
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"
.