typedef struct { int a; int b; char c; } MY_OWN_TYPE; static MY_OWN_TYPE gAType; static void useMyOwnList( MY_OWN_TYPE ** list ); static void initializeItem1( /*@out@*/ MY_OWN_TYPE ** ptrToItemInList ); void init( void ) { // create a list of my own types /*@null@*/ MY_OWN_TYPE * listOfMyOwnType[2]; // initialize item 0 to non-null value listOfMyOwnType[0] = &gAType; // initialize item 1 to null value listOfMyOwnType[1] = NULL; if ( (listOfMyOwnType[0] != NULL) && (listOfMyOwnType[1] != NULL) ) { // initializes item 1 to non-null value initializeItem1( &listOfMyOwnType[1] ); } if ( (listOfMyOwnType[0] != NULL) && (listOfMyOwnType[1] != NULL) ) { // pass list to function who wants list useMyOwnList( listOfMyOwnType ); } return; } static void useMyOwnList( MY_OWN_TYPE ** list ) { MY_OWN_TYPE * item; // stupid example of use if ( (list != NULL) && (list[0] != NULL) ) { item = list[0]; } return; } static void initializeItem1( /*@out@*/ MY_OWN_TYPE ** ptrToItemInList ) { static MY_OWN_TYPE item1; // return my item *ptrToItemInList = &item1; return; }