日期:2014-05-16  浏览次数:20664 次

指针问题
有两个指针char *p = “name”;char *q=(char *)malloc(20);
*q++=*p++;这样写为什么错呢?

------解决方案--------------------
char *p = “name”;
char *q=(char *)malloc(20);
*q++=*p++;
楼主这样是没有错误的。但上面的语句只是把字符n赋值给q之后q再指向下一个地址。

如果想把name全部拷过来,修改下你的代码
int main(int argc, char **argv)
{
char *p ="name";
char *head = (char *)malloc(20);
char *q = head;
while(*p!='\0')
{
*q++=*p++;
}
*q ='\0';
printf("%s\n",head);
}

或者while(*q++=*p++);因为*p='\0'它就退出循环了