我正在编写一些代码,但无法理解这个转换。据我了解,我们正在尝试将指向 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]
是指向 i
th 行。
访问i
th行的j
th元素c_grid
点到,你只需要 c_grid[i][j]
关于c++ - 字符转换解释了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24512285/