理解用c写的下面的指针代码

时间:2015-03-16 22:24:53

标签: c++ c pointers

我正在尝试理解一段代码而且我不是一个非常有经验的程序员。能否帮助我理解声明A的含义?

 dImage *filterdImage;     
 float *lp = filterdImage->pixels[0];//Statement A, what's going on?

这里,dImage是一个定义为:

的结构
 typedef struct dImage{
 int width; 
 int height;
 float **pixels;
}

2 个答案:

答案 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