通过C 访问char的数组

Accessing array by char in C++

本文关键字:数组 char 访问 通过      更新时间:2023-10-16

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

请记住,在C 中,字符表示为数字。看看这张ASCII桌子。http://www.asciatible.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

类型char实际上是一种积分类型。字符文字表示的每个char值都具有其基础积分值与给定代码页面中对应的基础值,这可能是ASCII表。当您这样做时:

count['b'] = 2;

您实际上是:

count[98] = 2;

作为字符 'b'对应于 98的积分值,字符 'c'对应于 99的积分值等。为了说明,以下语句:

char c = 'b';

等效于:

char c = 98;

这里的c具有相同的基础值,这是不同的表示。

因为字符总是由计算机中的整数表示,因此可以用作数组索引。

您可以通过此验证:

char ch = 'b';
count[ch] = 2;
int i = ch;
cout << i << endl;
cout << count[i] << endl;

通常输出为98 2,但第一个数字可能会根据环境的编码而有所不同。