// user managed array // (not good; should be done e.g. inside a struct) #include #include #include float *Pdata = NULL; // to hold array of data int Psize; // size of current block void initialize(int initialPsize); int set(int index, float value); void doubleSize( ); void dump( ); void release( ); int main( ) { initialize( 5 ) ; int i; for(i=0; i<7; i++) set( i , sqrtf(i) ); doubleSize(); set(7, 9999); dump(); return 0; } void initialize(int initialPsize) { Psize = initialPsize; Pdata = calloc( Psize, sizeof(float) ); } int set(int index, float value) { if( index < 0 || index>=Psize ) { return 0; } else { Pdata[index] = value; return 1; } } void doubleSize( ) { float *oldPdata = Pdata; Pdata = calloc( Psize*2, sizeof(float) ); int i; for( i=0; i