Solution for Exercise 19-24

ex1924

#include <stdio.h>

void discount(float *a);

int main()
{
    float price = 42.99;
    float *p;

    p = &price;
    printf("The item costs $%.2f\n",price);
    discount(p);
    printf("With the discount, that's $%.2f\n",price);
    return(0);
}

void discount(float *a)
{
    *a = *a * 0.90;
}

Notes

* The addition of the p variable to the code doesn't really change the program. The only difference is that variable p is passed to the function instead of the address of variable price. It's a minor difference, but I wanted to show that pointer variables can be passed to function as well as using the & operator to pass the address of a non-pointer variable.

* The bottom line is when a function is declared as requiring a pointer value, think of the value as an address. So when you see a prototype or function definition like this:

Recognize that time_t *tloc is a memory address. You pass an argument to the to the time() function that's either a time_t pointer variable or a non-pointer time_t variable prefixed by the & operator. Or you can use the NULL constant, as the compiler interprets that constant as a pointer value.