I cannot understand what is the problem with my code. I allocated space for a string and I passed it by reference to unparse\_symbol function. Though,somehow str is not being set to the strings I am proving in switch statements, e.g. str = "ADD" does not set str to "ADD". I cannot really understand what is the issue.. space is allocated and pointer is passed. 

Thanks for help!

```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef enum {ADD, MULT, MINUS, DIV, MOD, BAD} op_type;

    void unparse_symbol(op_type op, char *str)
    {
      switch (op) {
      case ADD:
        str = "ADD";
        break;
      case MULT:
        str = "MULT";
        break;
      case MINUS:
        str = "MINUS";
        break;
      case DIV:
        str = "DIV";
        break;
      case MOD:
        str = "MOD";
        break;
      case BAD:
        str = "BAD";
        break;

      default: str = "DEFAULT_CASE";
      }
      return;
    }

int main(void){

    char *string = calloc(10, 1);
    op_type add = ADD;
    unparse_symbol(add, string);
    printf("%s \n", string);

    return 0;
}

```