【发布时间】:2014-09-30 04:25:22
【问题描述】:
我很困惑将二维数组转换为一维数组。 我想以宽度、行和列格式的形式为“a11”(位于 (1,1))编写相邻的 8 个元素,而不使用 for 循环。
|<--Width--->|
cols
____________
| a00 a01 a02
rows | a10 a11 a12
| a20 a21 a22
我试过这样:
a00 = pSrc[(cols-1)+ (rows - 1)*width];
a02 = pSrc[(cols-1)+ (rows + 1)*width];
a10 = pSrc[cols+ (rows -1)*width];
a12 = pSrc[cols+ (rows +1)*width];
a20 = pSrc[(cols+1)+ (rows - 1)*width];
a22 = pSrc[(cols+1)+ (rows + 1)*width];
a01 = pSrc[(cols-1)+ (rows )*width];
a21 = pSrc[(cols+1)+ (rows )*width];
但我认为我犯了一些错误。谁能帮助我。
【问题讨论】:
-
供您参考
a[i][j] = *(*(a+ i) + j)。 -
我不想使用 for 循环,因为我正在 OpenCL 中编写代码。我正在用内核代码替换 for 循环。你能以我提到的上述格式给出答案
-
pSrc是如何定义的?对于您的示例案例,cols是否设置为1(rows是否设置为1)? -
Yes..rows 和 cols 设置为 1 .. 并且 psrc 是全局 uchar *pSrc
标签: c arrays multidimensional-array