for (i=0;i++;)
因为这个for循环中的i++成了循环判断条件,所以在开始循环之前要先判断它是否为0,如果为0则整个循环直接跳过,不会执行,遗憾的是在这个程序中就出现了这种情况,因为这个for循环等价于:
i=0;
while(i++)
{
if (*(p+i)!=0)
n=n+1;
else break;
}
这样,在判断i++的值时,会先取i的当前值0参与循环条件的判断,所以循环不会执行,n的值没有改变,还是初始化的值0
其次,p=a[0];也是不对的,应该改为p=a;或者p=&a[0];