void Check(Float_t *p[]);
void test8()
{
//
// test for the array of pointers
//
Float_t *p[2];
p[0] = new Float_t[2];
p[1] = new Float_t[2];
*p[0] = 1;
printf("p01 = %d %f\n",p[0],*p[0]);
p[0]++;
*p[0] = 2;
printf("p02 = %d %f\n",p[0],*p[0]);
Check(p);
}
void Check(Float_t *p[])
{
printf("p02 = %d %f\n",p[0],*p[0]);
p[0]--;
printf("p01 = %d %f\n",p[0],*p[0]);
//
// So far so good...
//
(*p[0]) = 7;
printf("p01 = %d %f\n",p[0],*p[0]); // and here it crushes!!
}
This works as expected. But if you remove the brackets around *p[0] used
as an lvalue, is p[0] which is assigned the value of 7, and the next line
bombs. Note that *p[0] works well as a left value few lines above in the
main program, but NOT in the procedure check. Any hint? Thanks,
Federico Carminati
==============================================================================
|| ||
|| _/_/_/_/_/_/_/ _/_/_/_/ _/ ||
|| _/ _/ _/ _/ _/ ||
|| _/ _/ _/ _/ ||
|| _/_/_/_/_/_/ _/ _/ _/ ||
|| _/ _/ _/ _/ ||
|| _/ _/ _/ _/_/_/_/_/ ||
|| _/ _/ _/ _/ _/ ||
|| _/ _/_/_/_/ _/ _/ ||
|| ||
==============================================================================
|| Federico Carminati || Tel.: +41.22.767.4959 ||
|| CERN-EP || Fax.: +41.22.767.9075 ||
|| 1211 Geneva 23 || ||
|| Switzerland || ||
==============================================================================