通常,我使用语法foo[2]
在C ++中访问数组,其中2是数组的索引。
在下面的代码中。我不明白这段代码是如何通过索引'b'
,'c'
提供输出和访问此数组的。我很困惑它是数组索引或其他东西。
int count[256] = {0};
count['b'] = 2;
cout << count['b'] << endl; //output 2
cout << count['c'] << endl; //output 0
输出
2
0
答案 0 :(得分:2)
类型char实际上是一个整数类型。 character literal表示的每个char
值都有一个与给定代码页对应的基础整数值,可能是ASCII table。当你这样做时:
count['b'] = 2;
你实际上是这样做的:
count[98] = 2;
因为字符'b'
对应于98
的整数值,字符'c'
对应于99
的整数值,依此类推。为了说明,以下声明:
char c = 'b';
相当于:
char c = 98;
此处c
具有相同的基础值,它的表示形式不同。
答案 1 :(得分:2)
请记住,在c ++中,字符表示为数字。看看这个ascii表。 http://www.asciitable.com
根据这个,字符'b'代表98而'c'代表99.因此你的程序真正说的是...
int count[256] = {0};
count[98] = 2;
cout << count[98] << endl; //output 2
cout << count[99] << endl; //output 0
此外,你不知道说数组= {0}
意味着零初始化每个值,这就是为什么count['c'] = 0
。
在C / C ++中,没有8位/ 1字节整数。我们只使用char类型来表示单个(有符号或无符号)字节,您甚至可以放置char类型的有符号和无符号前面。 Char真的只是我们碰巧用来表达字符的另一种int类型。您还可以执行以下操作。
char b = 98;
char c = 99;
char diff = c - b; //diff is now 1
答案 2 :(得分:0)
因为字符总是由计算机中的整数表示,所以它可以用作数组索引。
您可以通过以下方式进行验证:
char ch = 'b';
count[ch] = 2;
int i = ch;
cout << i << endl;
cout << count[i] << endl;
通常输出为98 2
,但第一个数字可能会因您的环境编码而异。