今天分享一个字符指针运算实例,希望大家能对字符指针有进一步的了解
先上代码
int main
{
char *p1 = "hello";
char *p2;
p2 = (char *)malloc(20);
//p2 = (char *)malloc(sizeof(char));
memset(p2,0,20);
while(*p2++ = *p1++)
printf("%s\n",p2);
return 0;
}
结果是输出五个空行
主要分析while(*p2++ = *p1++)这一句。
*和自加运算符++优先级相同,所以按照从右到左进行运算
所以*p2++就可以拆分成*p2和p2++,p2++有相当于p2=p2+1因此会导致指针p2发生改变,
所以while(*p2++ = *p1++)是先进行了*p2 = *p1运算,然后又进行了p2++和 p1++运算。
所以打印的值为字符串停止符‘0’