代码中 * 的含义
The meaning of * in the code
我遇到了如下代码
bool* keyStates = new bool[256];
void keyPressed(unsigned char key, int x, int y) {
keyStates[key] = true; // Set the state of the current key to pressed
}
里面有一个问题要问我。 如您所见key
是一个char
,因此它的值类似于'a'
。keyStates
是一组指向布尔变量的指针。
因此,我不明白为什么像keyStates['a']
这样的事情应该是真的?
在我看来,它的工作方式就像一个关联数组。右?
每个字符由一个唯一的数字表示,具体取决于表示形式1。在您的情况下,此唯一数字表示形式用作动态分配的bool
数组keyStates[]
中的索引:
char key = 'a';
keyStates[key] = true;
意味着将索引97
的元素设置为 true
。实际上,所有字符都是数组元素的唯一键/索引。
现在,回答您的问题:
因此,我不明白为什么像keyStates['a']这样的东西应该是真的?
在char
的定义中,可以这样写:
char
:机器的最小可寻址单元,可以包含基本字符集。它是一种整数类型。实际类型可以是有符号的,也可以是无符号的,具体取决于实现。
因此,char
是一个小整数,它是与整数类似的相同整数(或指针)算法的主题。
注意:
函数的参数是unsigned char
,因为这种类型的变量的值在0
和255
之间,而有符号字符(即 char
)的值在-128
和127
之间,没有覆盖数组的所有索引,并且可能访问数组之外的内存。
1. ASCII(扩展 ASCII)是一个例子,其中所有字符都用 0
到 255
的值表示。
keyStates
是一组指向布尔变量的指针。
不。 keyStates
是指向动态分配数组的第一个元素的指针。您应该知道char
可以用作数组索引。因此,keyStates['a']
属于bool
类型。相当于*(keyStates + 'a') = *(keyStates + 97) = keyStates[97]
。('a'
的 ASCII 值为 97
)。
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值