在C ++中通过char访问数组

时间:2017-12-14 11:46:55

标签: c++ arrays

通常,我使用语法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

3 个答案:

答案 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,但第一个数字可能会因您的环境编码而异。