我正在尝试理解一段代码而且我不是一个非常有经验的程序员。能否帮助我理解声明A的含义?
dImage *filterdImage;
float *lp = filterdImage->pixels[0];//Statement A, what's going on?
这里,dImage是一个定义为:
的结构 typedef struct dImage{
int width;
int height;
float **pixels;
}
答案 0 :(得分:2)
修复语法错误后,此代码非常简单。结构:
typedef struct dImage{
int width;
int height;
float **pixels;
}
包含一个图像,其中每个像素都是一个浮点(可能是灰度,如X射线或望远镜图像)。双**意味着像素阵列本身不是紧凑的2D阵列,而是阵列阵列;也就是说,它是一个行数组,每个行都是一个像素数组(在C中有两种不同的方式来做二维数组)。
float *lp = filterdImage->pixels[0];
将变量lp
设置为指向第一行像素。 pixels[1]
会指向第二行,等等。现在,您可以使用lp[0]
,lp[1]
等访问该行的每个像素。
答案 1 :(得分:1)
filterdImage->pixels
访问pixels
中的filterdImage
成员。
filterdImage->pixels[0]
访问pixels
指向的数组中的第一个元素。由于pixels
的类型为float**
,因此元素的类型为float*
。
float *lp = filterdImage->pixels[0]
将指针指定给lp
。