今天写作业过程中,为练习地址传递,将指针地址传递到函数时遇到了主函数指针并没有发生移动,并发生了段错误。
错误代码是这样子的:
int quzheng(char **s)
{
int num = 0;
while (**s)
{
if (**s >= 48 &&**s <= 57)
{
num = num * 10 + (**s - 48);
*s++;
}
else
{
break;
}
}
return num;
}
结果想了半天发现是应该把*s括起来,*s++运算优先判定是将先取s然后移动,这有逻辑错误
应当将*s移动,所以当前逻辑下应将*s括起来,才能达到预期功能。