使用字符指针计算数组的索引

时间:2013-09-03 03:52:37

标签: c

请告诉我声明的含义

printf("%s",single[*num-'1']);  

在这个语句中,[* num-'1']产生了什么索引号?我不想要数字但想要解释。

3 个答案:

答案 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

我希望这会有所帮助。