对字符指针的操作[重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

我遇到了如下代码

#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]);
c gcc
1个回答
1
投票

嗯,这样的陈述

  a+6[a]-2[a]

可以重写为

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

这很简单,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.