请告诉我声明的含义
printf("%s",single[*num-'1']);
在这个语句中,[* num-'1']产生了什么索引号?我不想要数字但想要解释。
答案 0 :(得分:3)
num
,从结果值中减去'1'
或0x31。
答案 1 :(得分:3)
printf("%s",single[*num-'1']);
在此语句中,您正在计算二维数组索引的索引[index]。并打印它
如果* num等于'3'且其ascii值为51
'1'ascii值为49
单[51-49]等于单[2]
现在你正在打印单个字符串[2]。
答案 2 :(得分:0)
在C中,任何字符或字符串基本上都是由ASCII字符表示的整数类型,所以当你说
char x = 'a';
存储的是一个整数,即97
的ASCII值。
换句话说,如果你也printf("%c",(char)97);
你得到的输出为'a'
字符。
因此,当您执行*num
时,您获得的是存储在指针 num
中的值。
下一部分是从它中减去1
...换句话说,1
是一个字符,它被转换为一个整数,在ASCII表中的值为49
。你可以get the ASCII table reference here。
所以基本上你在写single[(some value) - 49]
。
让我们假设*num=60
因此,我们printf("%s",single[60-49]);
相当于printf("%s",single[11]);
其余的取决于您如何使用变量single
。
我希望这会有所帮助。