VS CRT C标准库函数strrev解析
char * t_strrev (char * string)
{
char *start = string;
char *left = string;
char ch;
while (*string++) /*此时指针变量指向\0后面一个*/
;
string -= 2;//指针住前移,指向最后一个字符的指针
while (left < string)
{
ch = *left;//首字符赋值给中间变量ch
*left++ = *string;//指针自增,并把最后一个字符,赋值给第一个字符
*string-- = ch;//指针自减,把第一个字符赋值给最后一个字符
}
return(start);//返回字符串
}
需要理解的知识:
指针的自加 ,自减运算也是地址运算
m = * p ++ 等价于 m = *(p ++)
取指针 p 当前所指变量的值赋给变量 m ; p 做加 1 运算 , 指向下一个目标变量 .
m = * ++ p 等价于 m = * ( ++ p)
p 做加 1 运算 , 指向下一个目标变量 ; 取指针 p 当前所指变量的值赋给变量 m .
m = (*p)++ 与 m = ++(*p)
前者是将指针 p 所指的变量的值赋给变量 m , 然后变量 *p 自加 1 ;
后者是将指针 p 所指的变量 *p 的值自加 1 后赋给变量 m .