*(q2+i)等价于s1[i],for循环的第二个条件也就相当于 s1[i] != 0
for(int i=0; *(q2+i); i++)
等价于:
for(int i=0; s[i];i++)
等价于:
for(int i=0; s[i] != 0;i++)
s[i]为真等价于 s[i] !=0
因为是上面的代码没有看到,这里有两种解释,一种是如果数组是int,那么*(q2+i)作为判断条件,就是*(q2+i) == 0 或者*(q2+i) 非0,另外一种就是q2是一个布尔值的数组,这样*(q2+i)取出来的就是布尔值
知道是指针偏移,我这有点陷入for循环的i等于0,i小于或者大于多少,i++或i--。这种指针偏移到\0跳出的感觉有点看的难受,老是觉得不清楚。