#include #include #include typedef struct tokn { int tokentype; int datatype; struct tokn * link; struct tokn * op; } *TOKEN; TOKEN inittok(TOKEN tok) { TOKEN j = malloc( sizeof *j ); j->tokentype = 3; j->datatype = 5; j->link = NULL; j->op = NULL; tok->tokentype = 1; tok->datatype = 2; tok->link = NULL; tok->op = j; return tok; } TOKEN copytok(TOKEN orgtok) { TOKEN newtok = malloc( sizeof *newtok ); //newtok = orgtok; newtok->tokentype = orgtok->tokentype; newtok->datatype = orgtok->datatype; newtok->link = orgtok->link; newtok->op = orgtok->op; return newtok; } int main() { TOKEN tok = malloc( sizeof *tok ); TOKEN tokb = malloc( sizeof *tokb ); tok->tokentype = 4; tok->datatype = 6; tok = inittok(tok); tokb = copytok(tok); tokb->tokentype = 34; tokb->datatype = 556; // tokb->op->tokentype = NULL; //tokb->op = NULL; // ERROR - why? printf("tok %5d %5d %5d %5d %5d\n", tok->tokentype, tok->datatype, tok->link, tok->op->tokentype, tok->op->datatype); printf("tokb %5d %5d %5d %5d %5d\n", tokb->tokentype, tokb->datatype, tokb->link, tokb->op->tokentype, tokb->op->datatype); free(tok); return 0; }