The first way, passing the pointer to the record in a function, is considered the better way, because you don't want a function to return structures which take a lot of memory.
// This is not neccisary
// Okay, now s is an array of RECORD_DATA
// stock_rec is the variable we use to step through the array
// This is the problem, you are just changing the value of stock_rec. Instead you need to change the value of what it is pointing at.
//stock_rec= (a function returns a pointer to data struct of type
// There are two ways to do this...
changeRec (stock_rec); // example below
*stock_rec = (a function that returns a RECORD_DATA [not a pointer])
void changeRec (RECORD_DATA * p)
p -> info = 0;
p -> artist = 'M';
p -> foo = bar;