Casting Question
    David Chinn 
    chinn at butler.UUCP
       
    Tue Jan 14 15:24:57 AEST 1986
    
    
  
*** REPLACE THIS LINE WITH YOUR MESSAGE ***
I have been looking at hoc, which appeared on the net
some time ago.  I am relatively new to the language (C)
and so was puzzled by the following ....
typedef int (*Inst)();  /* machine instruction */
			/* Inst is typedefed to a "pointer to a function
			   returning an integer */
	.
Inst    *pc;            /* program counter during execution */
			/* pc is declared to be a pointer to an Inst;
	.	           or, a pointer to a pointer to a function  */
		
ifcode()
{
	Inst *savepc= pc;     /* then part */
			      /* savepc is the same as pc */
        	pc = *((Inst **)(savepc+2));     /* next stmt */
                     ^^^^^^^^^^^^^^^^^^^^^^
                      So what is this for?
}
I understand that the cast makes it (savepc+2) a pointer to a pointer to
an Inst (or a pointer to a pointer to a pointer to a function returning
an integer).  But then the de-referencing star on the outside takes one
level of indirection away, making savepc+2 what it was anyway ( a
pointer to a pointer to a function returning an integer.)
I compiled hoc and tested the if statement; it worked.  I edited code.c
and removed the seemingly extraneous cast and de-ref: it still worked.
Any enlightenment would be appreciated....
    ... uw-beaver                                david m chinn
           !{tikal,teltone}                      box 2249
	       !dataio!butler!chinn     	 kirkland, wash 98083
    
    
More information about the Comp.lang.c
mailing list