Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!rutgers!cmcl2!adm!smoke!gwyn From: gwyn@smoke.brl.mil (Doug Gwyn) Newsgroups: comp.lang.c Subject: Re: "void **" : Is it valid and what does it mean? Message-ID: <16292@smoke.brl.mil> Date: 29 May 91 07:27:39 GMT References: <6001@goanna.cs.rmit.oz.au> <1991May28.115914.19879@email.tuwien.ac.at> Organization: U.S. Army Ballistic Research Laboratory, APG, MD. Lines: 7 By the way, there is no need to go through a lot of gyrations to attain the originally-stated goal. Just declare the parameter as a void * anyway, and apply the appropriate cast inside the function where it is used. E.g. void foo(void *param) { ++(*(struct msg **)param)->field; } After all, the thing pointed to, in this case a "struct msg *", is also an object and so a pointer to it (a "struct msg **") can be fairly conveniently converted to void* and back.