请问这样子引用怎么什么都输不出来?

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

void dd(char* a , char* b)
{
    char *p=a,*q=b;
    while(*p!='\0')
    {
        *q=*p;
    }
}

int main()
{
    char *a="123";
    char *b,*p,*q;
    p=a,q=b;
    dd(a,b);
    printf("%s\n,%s\n",a,b);
}

用指针声明的的字符串属于const的量,不可改变,建议用数组,数组的字符串可以改变。