对字符指针的操作

时间:2017-12-18 14:07:38

标签: c gcc

我遇到了一个代码,如下所示

#include <stdlib.h>
int main(){
   char a[]="0123456789";
   printf("%s\n",a+6[a]-2[a]);
   return 0;
} 

输出

456789

如何在printf中计算 a + 6 [a] -2 [a]

为什么在printf中仅使用6 [a]不起作用?

printf("%s\n",6[a]);

1 个答案:

答案 0 :(得分:1)

嗯,像

这样的陈述
  a+6[a]-2[a]

可以重写为

 &(a[ a[6] - a[2] ])

简单地说,

  • 使用a[6](type,int)的值作为第一种情况下的索引
  • 使用a[2](类型int)的值作为RHS。

结果是指针,作为printf()转换规范的参数传递给%s