p=s 让指针p指向数组首地址,所以第一次*p = “表达式”相当于a[0]=p[0]=“表达式”,p++后等于指针后移一个int的字节数,即后移到a[1]位置。*p = “表达式”相当于a[1] = p[1]=“表达式”。以后依次类推。现在来看你的程序。do{}while循环,先执行一次,那么b = a % 16;a为28,则b为12。b>10,所以p[0] = b+55 p[0]为67,字符'c'的ascll码是67,之后p++,则下次*p等于 p[1]即a[1],之后a = a/5;a目前为28,计算后a为5,5>0继续下次循环,b = a %16,a为5,则b计算后等于5,5<10, *p = 5 + 48,即p[1] = 53,字符5的ascll码是53,以后同样原理算出p[2] = 49,为字符'1'的ascll码,此时a = 0,结束循环,继续*p = '\0',则意味着p[3] = '\0',所以输出字符串为C51 |