一道题检测是否理解指针

来源:互联网 发布:onavo mac版 编辑:程序博客网 时间:2024/05/01 03:51

     这道题给我的感觉就是,指针跳过来跳过去,眼花缭乱

     

     大家也来看看

 

代码如下

#include <iostream>using namespace std;int FindSubString( char* pch ){int   count  = 0;char  * p1   = pch;while ( *p1 != '\0' ){if ( *p1 == p1[1] - 1 ){p1++;count++;}else{break;}}int count2 = count;while ( *p1 != '\0' ){if ( *p1 == p1[1] + 1 ){p1++;count2--;}else{break;}}if ( count2 == 0 )return(count);return(0);}void ModifyString( char* pText ){char  * p1   = pText;char  * p2   = p1;while ( *p1 != '\0' ){int count = FindSubString( p1 );if ( count > 0 ){*p2++ = *p1;sprintf( p2, "%i", count );while ( *p2 != '\0' ){p2++;}p1 += count + count + 1;}else{*p2++ = *p1++;}}}void main( void ){char text[32] = "XYBCDCBABABA";ModifyString( text );printf( text );}


运行结果




以前没用过sprintf函数,虽然baidu了一下,还是不太懂

这里,如果把

while ( *p2 != '\0' ){p2++;}

注释掉


则输出结果如下




感觉比较怪异

2 1