Jeff Squyres, le Sat 12 Feb 2011 04:34:36 +0100, a écrit :
> static void
> hwloc_setup_groups_from_distances(struct hwloc_topology *topology,
> unsigned nbobjs,
> struct hwloc_obj **objs,
> float *_distances)
> {
> float (*distances)[nbobjs][nbobjs] = (float (*)[nbobjs][nbobjs])_distances;
>
> As far as I can tell, _distances is a 1D array of floats, but it is of size (nbobjs*nbobjs) -- i.e., you could think of it as a 2D array, and index the i'th column in the j'th row at _distances[i * nbobjs + j]. From how its used in the code, distances is treated as a 2D array -- i.e., distances[i][j] is accessed.
That's exactly it. It permits to keep code less clumsly to read.
Samuel
|