c中“argv['A']”是什么意思?

use*_*081 3 c

我找到了以下代码,但我不明白它是什么或它是如何工作的。我以前只在 C 中见过argv[n](argv with an integer index) ,从来没有见过像argv['A'].

if(argc != 100) return 0;
if(strcmp(argv['A'],"\x00")) return 0;
if(strcmp(argv['B'],"\x20\x0a\x0d")) return 0;
printf("Stage 1 clear!\n");
Run Code Online (Sandbox Code Playgroud)

这是做什么的?你能解释一下为什么它有效吗?

Edw*_*nix 5

从技术上讲,这在 C 中对于访问 argv ( ) 的元素是有效的argv[65]

编辑:正如 John Ballinger 在评论中指出的那样,只有当您的 C 实现将字符文字映射到其 ASCII 值时才会出现这种情况,而标准并不要求这样做。然而,大多数 C 实现都是这样做的,所以我假设代码的作者正在使用这个假设。

这是因为在 C 中,所有字符文字都可以充当数字文字。

当然,如果您期望 argv 中有 65 个以上的元素,则可能有问题。即便如此,除非您的 argv 与字母有某种特定的关联,否则对索引 65 和 66使用'A'and是没有意义的。'B'

TL;DR它是一个索引,但代码非常异常,并且可能是故意混淆的

  • *技术上*,访问哪个“argv”元素取决于实现。实现不需要使用 ASCII 将字符映射到整数,有些实现不需要。 (2认同)