1extern void abort(void); 2 3typedef struct myCDerived 4{ 5 int cInt; 6 double cDouble; 7 float cFloat; 8 short cShort; 9 void *ptr; 10}myCDerived_t; 11 12#define DERIVED_ARRAY_LEN 10 13#define ARRAY_LEN_2 3 14#define DIM1 2 15#define DIM2 3 16 17void testDerivedPtrs(myCDerived_t *cDerivedPtr, 18 myCDerived_t *derivedArray, int arrayLen, 19 myCDerived_t *derived2d, int dim1, int dim2); 20 21int main(int argc, char **argv) 22{ 23 myCDerived_t cDerived; 24 myCDerived_t derivedArray[DERIVED_ARRAY_LEN]; 25 myCDerived_t derived2DArray[DIM1][DIM2]; 26 int i = 0; 27 int j = 0; 28 29 cDerived.cInt = 1; 30 cDerived.cDouble = 2.0; 31 cDerived.cFloat = 3.0; 32 cDerived.cShort = 4; 33/* cDerived.ptr = NULL; */ 34 /* nullify the ptr */ 35 cDerived.ptr = 0; 36 37 for(i = 0; i < DERIVED_ARRAY_LEN; i++) 38 { 39 derivedArray[i].cInt = (i+1) * 1; 40 derivedArray[i].cDouble = (i+1) * 1.0; /* 2.0; */ 41 derivedArray[i].cFloat = (i+1) * 1.0; /* 3.0; */ 42 derivedArray[i].cShort = (i+1) * 1; /* 4; */ 43/* derivedArray[i].ptr = NULL; */ 44 derivedArray[i].ptr = 0; 45 } 46 47 for(i = 0; i < DIM1; i++) 48 { 49 for(j = 0; j < DIM2; j++) 50 { 51 derived2DArray[i][j].cInt = ((i*DIM1) * 1) + j; 52 derived2DArray[i][j].cDouble = ((i*DIM1) * 1.0) + j; 53 derived2DArray[i][j].cFloat = ((i*DIM1) * 1.0) + j; 54 derived2DArray[i][j].cShort = ((i*DIM1) * 1) + j; 55/* derived2DArray[i][j].ptr = NULL; */ 56 derived2DArray[i][j].ptr = 0; 57 } 58 } 59 60 /* send in the transpose size (dim2 is dim1, dim1 is dim2) */ 61 testDerivedPtrs(&cDerived, derivedArray, DERIVED_ARRAY_LEN, 62 derived2DArray[0], DIM2, DIM1); 63 64 return 0; 65}/* end main() */ 66 67