Home Segments Index Top Previous Next

363: Mainline

Now suppose that you want to assign a trade pointer to the address of a chunk of memory removed from the free store for a trade object. Suppose tptr is the pointer and malloc (sizeof (trade struct)) is the expression producing the address of the memory chunk. You might think that the following would assign the proper value to tptr:

tptr = malloc (sizeof (struct trade));  /* DEFECTIVE */ 

The statement looks like it should work. After all, tptr is a variable whose value is supposed to be an address, and malloc is a function that is supposed to return an address. The problem is that the address returned by malloc is not the same as the type declared for tptr. Accordingly, C requires you to cast the value returned by malloc, thus converting that value into the type required for assignment to the tptr object pointer.