【发布时间】:2021-01-14 13:42:08
【问题描述】:
我有以下二维无符号字符数组来将图像存储为 0 到 255 之间的值:
unsigned char img[MAX_DIM][MAX_DIM];
我有一个以二维 int 数组为参数的函数:
void transpose(int m[][MAX_DIM], int h, int w);
如何将 char 数组传递给该函数?我尝试了类似的方法,但它不起作用:
transpose((int (*)[MAX_DIM])img, h, w);
【问题讨论】:
-
您不能将
unsigned char [][]数组传递给接受int[][]array 的函数。确定您希望使用的类型,然后始终如一地使用该类型。 -
@Lundin 为什么我不能直接投射?
-
因为这些类型远不兼容,所以它们有不同的大小。
-
因为转换
(int)my_char适用于单个变量,在这种情况下会被转换。如果要对 2D 数组执行相同的操作,则必须遍历 2D char 数组并将每个单独的项目转换为 2D int。这行得通,但速度很慢。为什么必须首先使用unsigned char? -
因此,我是否应该将
transpose改为使用unsigned char?
标签: arrays c multidimensional-array casting type-conversion