[comp.lang.c] Variable Parameters in C functions

chuck@umiami.ir.miami.edu (Chuck Urwiler) (01/11/91)

Hello.

I was wondering if any of you out there have messed around with functions 
that use variable paramaters.  I have implemented a binary tree structure 
and my insert function requires that I use a variable paramater, to change 
the actual global data, not the local.  I have several trees that I'm going 
to be using in this program, so just using the global variables won't work. 
I've managed to create some code that works, but I've found that it's not 
"clean" and will not compile on other machines besides the VAX.  Here's the 
code I've written:

#define NILP 0L
struct duration { int data;
                  struct duration *lchild,*rchild;
                  int quant;};
struct duration *dur,*top;
main()
{  dur=NILP;
   menu();
}
menu()
{...   insert(dur,&dur,newnum);  ... }

insert(node,add,ndata)
int ndata,*add;
struct duration *node;

{  struct duration *temp;
   
      if (node==NILP)
   {  temp=malloc(sizeof(struct duration));
      if (temp!=0)
      {  temp->lchild=NILP;
         temp->rchild=NILP;
         temp->data=ndata;
         *add = temp;
      }
      else
         puts("Can't allocate more space.");
   }
   else if (ndata < node->data)
           insert(node->lchild,&(node->lchild),ndata);
        else
           insert(node->rchild,&(node->rchild),ndata);
}

I assume that somewhere along the line that I'm breaking some rules, or
maybe some compilers are telling me that this code is gonna scribble all
over uncharted places in memory.  Any suggestions you may have to "clean"
up this code, or other ideas you may have to do the same trick, please
e-mail me a reply.  Any help would be greatly appreciated! 
-- 
   Chuck Urwiler    University of Miami Music Engineering   Voice & Keys  
===========================================================================
chuck@umiami -or @umiamivm  (Bitnet) |"Sometimes, the one thing that you're 
chuck@umiami.ir.miami.edu (Internet) | looking for, it's the last thing on 
chuck@miavax.ir.miami.edu (Internet) |  your mind"    -Robbie Nevil
pannet!curwiler@uunet.uu.net   (PAN) | 
===========================================================================
Disclaimer: I only work and learn at this University. I don't speak for it!