#include <stdio.h>
#include <malloc.h>
#include <iostream>
void func( char * w, int m )
{
printf( "%s \n", w );
printf( "w -> %p \n", w );
char * a = w;
char * b = w;
printf( "a -> %p \nb -> %p\n", a, b );
for( int i = 0; i < m; ++i )
*w++;
printf( "%s \n", w );
printf( "w -> %p \n", w );
printf( "a -> %p \nb -> %p\n", a, b );
while( *w )
{
*a++ = *w++;
}
printf( "%s \n", a );
printf( "%s \n", b );
printf( "w -> %p \n", w );
printf( "a -> %p \nb -> %p\n", a, b );
}
int main( int argc, char ** argv )
{
char w[] = "ABCDEFG";
func( w, 2 );
system("pause");
return 0;
}

a 和 b本来指向同一块地址,b指向的内存位置一直没变,但是上面的while里a将这块内存的内容改了!