Home Segments Index Top Previous Next

319: Mainline

Having converted trade_price's ordinary trade structure parameter, t, into a trade pointer parameter, tptr, your program must, of course, dereference tptr inside the trade_price function to identify a particular trade structure object in the trades array. Accordingly, instead of expressions, such as t.price, that read structure variables in a trade copy, you need expressions that read structure variables in a trade object identified by a dereferenced pointer. The redefined trade_price function is as follows:

double trade_price (struct trade *tptr) { 
  return (*tptr).price * (*tptr).shares} 

Note that you must enclose *tptr in parentheses to refer to the price of the trade object to which tptr points, because the structure-member operator, the period, has precedence higher than that of the dereferencing operator, the asterisk. Accordingly, a version without parentheses, *tptr.price, is equivalent to *(tptr.price), which means produce the object pointed to by a pointer stored, peculiarly, in the price member variable of a pointer to a trade object. What you want, of course, is the version that means produce the value stored in the price member variable of the dereferenced pointer to a trade object.