[英]What is the meaning of “argv['A']” in c?
我找到了以下代碼,但我不明白它是什么或如何工作。 我以前只在C中看過argv[n]
(帶有整數索引的argv),從未見過像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");
這是做什么的? 您能解釋一下它為什么起作用嗎?
從技術上講,這在C語言中對於訪問argv( argv[65]
)的元素有效。
編輯 :正如John Ballinger在評論中指出的那樣,僅當您的C實現將字符文字映射到其ASCII值時,這才是標准要求的。 但是,大多數C實現都這樣做,因此我假設代碼的作者正在使用此假設。
這是因為在C語言中,所有字符文字都可以充當數字文字。
當然,如果您期望argv中有65個以上的元素,則可能是錯誤的。 即便如此,除非您將argv與字母進行特定的關聯,否則將65和66用作索引的'A'
和'B'
是沒有意義的。
TL; DR它是一個索引,但是代碼異常異常,並且可能被故意混淆了
'A'
只是用int
類型指定值的一種方法(假設您已經傳遞了字母數字字符,則必須能夠將其適合平台上的char
。)該值是實現定義的,盡管使用ASCII ,是65歲。
所以argv['A']
就像int n = 'A'; argv[n];
int n = 'A'; argv[n];
程序是否配備了這么多的命令行參數( argc
會告訴您,並且if(argc != 100)
不夠充分)是另一回事。
綜上所述,可以在C語言中從自身調用main
; 也許然后引入命令行參數,作為混淆的練習。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.