急!!!!c++指针的一个小问题

这个代码的结果为啥是6呀??

sub()函数中,while语句使得p不断后移,直到*p的值为0为止,p开始指向s,输入的字符串s=“abcdeg”有6个字符,所以p就后移了6次。也就是说,sub()函数就是统计字符串s的长度,所以cout << sub(a) << endl;这句话输出的是6。

如有帮助,请采纳一下,谢谢。

你定义的字符数组a[]传给*s,

s的地址赋给指针*p,(*p)p++得到p=6,

return(p-s);的时候,

由于你定义的sub()是整形,s是字符类型,p是整型,

所以只输出了p=6,后面的减号和s没有返回,

而且return本来就只能返回一个值,两种类型存在也只能返回其中的一种。