通过C 访问char的数组
Accessing array by char in C++
通常,我通过语法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
,但第一个数字可能会根据环境的编码而有所不同。