谁能给解释一下下面的代码问题

void encoding(hafuman ht[], bianma *bm, int n) 
{  
    int start, c, p;  
    char *ch;  
    ch=(char *)malloc( n*sizeof(char) );  
    ch[n-1]='\0';  

    for(i=1; i<=n; i++) 
    {  
        start=n-1;  
        c=i, p=ht[i].parent;   

        while(p!=0)  
        {  
            start--;  
            if(ht[p].lchild==c)  
                ch[start]='0';  
            else  
                ch[start]='1';  

            c=p; p=ht[p].parent;    //printf("\n123\n");  
        }  

        strcpy( bm->copy[i-1], &ch[start] );  
        //printf("\n%s\n", bm->copy[i-1]);     
    }  
    free(ch);  

} 

其中的copy是做什么用的,有什么功能含义,请大家帮忙解答,strcpy( bm->copy[i-1], &ch[start] ); 这句什么意思??

 strcpy( bm->copy[i-1], &ch[start] );//将字符数组ch拷贝到字符数组copy里,拷贝个数由ch数组中字符串结束标志'\0'决定
 //copy应该是字符数组名或指针变量,你可以看看bianma定义