c++ - 字符转换解释了吗?

标签 c++ c pointers casting

我正在编写一些代码,但无法理解这个转换。据我了解,我们正在尝试将指向 unsigned char 数组的指针转换为其他内容。我不太确定 (*c_grid) 的含义以及 (*)[dim_x] 的用途。

unsigned char (*c_grid)[dim_x] = (unsigned char (*)[dim_x])grid_in;

P.S.:然后我就可以以 c_grid[i][j] 的形式访问 c_grid 元素?

最佳答案

c_grid 是指向 unsigned char 类型的 dim_x 元素数组的指针。 (unsigned char (*)[dim_x]) 正在将 grid_in 转换为与 c_grid 相同的类型,即指向数组的指针unsigned char 类型的 dim_x 元素。

c_grid 是一个指向数组的指针。那意味着什么?

当你声明时

int a[10];
int *p = a; 

然后您可以使用p[i]访问数组a的其余元素。相同的规则适用于二维数组。
如果 grid_in 是一个二维数组,而 c_grid 是指向其第一个元素的指针(grid_in 的每个元素都是长度为 dim_x 的一维数组),那么当您将c_grid增加1时,它将指向二维数组grid_in的下一行。因此,您可以说 c_grid[0] 是指向第一行的指针,而 c_grid[i] 是指向 ith 行。

访问ith行的jth元素c_grid点到,你只需要 c_grid[i][j]

关于c++ - 字符转换解释了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24512285/

相关文章:

c - 为什么不能在 if 语句中使用空指针?

c++ - C++中的指针数组和指向数组的指针

c++ - 释放包含 malloc 字符串的 malloc 结构

c++ - 为什么数组分配后的堆这么大

C++ vector 指针数组

connect()在UDP客户端服务器中为C窗口中的IPv6地址提供错误

c++ - COM 的 CoUnintailize() api 崩溃

c++ - 如何实现两个第三方类型之间的转换?

c++ - 将负数存储在 char 数组中(仍然没有所需/所需的解决方案)

c - 我在哪里可以找到 unix 上 C 中的头文件