0

我声明了一个应该是像素的结构,它有 3 个属性(xy位置和F强度),如下所示:

struct pixel {
    int F,          // intensity from 0-255
    x,              // horizontal component           
    y;              // vertical component
};

然后我声明了一个像素类型的二维数组(上面的结构),如下所示:

int N=100;
pixel image[N][N];

然后我使用以下循环将值分配给xand 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++; 
     }

我做错了什么?

4

4 回答 4

4

您可以使用iandj来索引image

    image[i][j].x = count;

我根本不明白你为什么需要k和明确的指数计算。编译器会自动为您完成。

于 2012-12-12T20:28:12.220 回答
2

线

image.x[k] = count;

是不正确的。您声明了一个二维像素数组:

pixel image[N][N];

访问数组元素的方法如下:

image[i][j].x = count;

您不需要自己计算平面指数 k。

于 2012-12-12T20:30:40.470 回答
2

您正在尝试索引结构的字段而不是结构本身,而且您没有将其索引为二维数组。

而不是这样做:

image.x[k]

做:

image[i][j].x

另外,你的代码编译了吗?一些编译器会拒绝边界是变量的数组声明,即使是 const。

于 2012-12-12T20:28:04.413 回答
0

首先,没有定义“k”。因此,它将为 k 使用垃圾值。

此外,对于图像中的点的索引,您必须使用:

image[i][j]

因此,您的程序中的更正将是:

image[i][j].x = count;

代替image.x[k] = count;

于 2012-12-12T20:36:22.927 回答