结构体指针

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:35:10
结构体指针++后还是指向原来的单元?为什么
下面就是这段出问题的代码

/*按照哈夫曼树创建编码表hc*/
void code(tree t,hcode *hcp,char *cd,int i,char ch)
{
int k;
if(t!=NULL)
{
cd[i]=ch;
if(t->lchild==NULL)
{
hcp->cd=malloc((i+2)*sizeof(char));
for(k=0;k<=i;k++)
{
hcp->cd[k]=cd[k];
}
hcp->cd[k]='\0';
hcp->ch=t->data;
printf("%c %s\n",hcp->ch,hcp->cd);
hcp++; 这里就是那个问题,++后指针还是指向原来的单元的。
}
else
{
i++;
ch='0';
code(t->lchild,hcp,cd,i,ch);
ch='1';
code(t->rchild,hcp,cd,i,ch);
}
}
}

/*由哈夫曼树T生成各字符的哈夫曼编码*/
void huffmancode(tree t,hcode *hc)
{
char *cd,ch;
hcode *hcp;
int i=0;

hcp=hc;
if(t!=NULL)
{
cd=malloc(30*sizeof(char));
if(cd==NULL) {printf("Can't open cd

首先,指针++以后是指向的下个该类型的变量,不是本身了

你是在main函数里调用这个code函数吧,HCP在code里面加了以后,是不影响main函数中hcp的值的,因为它是传值调用,不是传址调用,所以不会修改实际的HCP的值