我声明了一个应该是像素的结构,它有3个属性(x
,y
位置和F
强度),如下所示:
struct pixel {
int F, // intensity from 0-255
x, // horizontal component
y; // vertical component
};
然后我声明了像素类型的2D数组(上面的结构),如下所示:
int N=100;
pixel image[N][N];
然后我使用以下循环将值分配给x
和y
:
int count, k;
for (int i=0 ; i<N ; i++)
for (int j=0 ; j<N ; j++)
{
k = j + i*N;
image.x[k] = count;
count++;
}
我做错了什么?
答案 0 :(得分:4)
您可以使用i
和j
索引image
:
image[i][j].x = count;
我不明白为什么你需要k
和显式索引计算。编译器会自动为您完成。
答案 1 :(得分:2)
您正在尝试索引结构的字段而不是结构本身,而且您没有将其索引为2D数组。
而不是:
image.x[k]
执行:
image[i][j].x
此外,您的代码是否已编译?有些编译器会拒绝一个数组的声明,其中的边界是变量,即使是const。
答案 2 :(得分:2)
该行
image.x[k] = count;
不正确。您声明了一个2D像素数组:
pixel image[N][N];
访问数组元素的方法如下:
image[i][j].x = count;
您不需要自己计算平坦指数k。
答案 3 :(得分:0)
首先,'k'未定义。因此,它将使用k的垃圾值。
此外,要索引图像中的点,您必须使用:
image[i][j]
因此,您的计划中的更正将是:
image[i][j].x = count;
而不是image.x[k] = count;